Formulaires réactifs | Formulaires basés sur des modèles | |
---|---|---|
Configuration (modèle de formulaire) | Plus explicite, créé dans la classe de composant | Moins explicite, créé par des directives |
Modèle de données | Structuré | Non structuré |
Prévisibilité | Synchrone | Asynchrone |
Form validation | Les fonctions | Directives |
Mutabilité | Immuable | Mutable |
L'évolutivité | Accès à l'API de bas niveau | Abstraction au-dessus des API |
FormControl
suit la valeur et l'état de validation d'un contrôle de formulaire individuel.FormGroup
suit les mêmes valeurs et statut pour une collection de contrôles de formulaire.FormArray
suit les mêmes valeurs et le même statut pour un tableau de contrôles de formulaire.ControlValueAccessor
crée un pont entre les instances FormControl
Angular et les éléments natifs du DOM
.FormControl
.
FormControlDirective
) relie ensuite l'instance FormControl
existante à un élément de formulaire
spécifique dans la vue à l'aide d'un accessor de valeur (ControlValueAccessor
).
NgModel
est responsable de la création et de la gestion de l'instance FormControl
pour un élément de formulaire donné.
C'est moins explicite, mais vous n'avez plus de contrôle direct sur le modèle de formulaire.
FormControl
.
Les mises à jour de la vue vers le modèle et du modèle vers la vue sont synchrones.
input
" avec la dernière valeur.FormControl
.FormControl
émet la nouvelle valeur à travers l'observable valueChanges
.valueChanges
reçoivent la nouvelle valeur.favoriteColorControl.setValue()
, qui met à jour la valeur du FormControl
.FormControl
émet la nouvelle valeur à travers l'observable valueChanges
.valueChanges
reçoivent la nouvelle valeur.input
.input
émet un événement "input
" avec la valeur Blue.setValue()
sur l'instance FormControl
.FormControl
émet la nouvelle valeur à travers l'observable valueChanges
.valueChanges
reçoivent la nouvelle valeur.NgModel.viewToModelUpdate()
qui émet un événement ngModelChange
.favoriteColor
, celle-ci est mise à jour avec la valeur émise par l'événement ngModelChange(bleu)
.favoriteColor
passent du bleu au rouge.favoriteColor
est mise à jour dans le composant.ngOnChanges()
de cycle de vie est appelé sur l'instance NgModel
de directive, car la valeur de l'une de ses entrées a été modifiée.ngOnChanges()
met en file d'attente une tâche asynchrone pour définir la valeur de l'interne FormControl
.FormControl
émet la dernière valeur à travers l'observable valueChanges
.valueChanges
reçoivent la nouvelle valeur.favoriteColor
.favoriteColorControl
du composant correspond à la valeur de l'entrée.favoriteColorControl
, une instance FormControl
pour définir la nouvelle valeur.favoriteColor
de la propriété du composant correspond à la valeur de l'entrée.favoriteColor
.tick()
pour simuler le passage du temps dans la tâche fakeAsync()
.favoriteColor
dans l'occurrence du composant.FormControl
renvoie un nouveau modèle de données plutôt
que de mettre à jour le modèle de données existant. Cela vous donne la possibilité de suivre les modifications uniques apportées au modèle de données
via l'observable du contrôle. Cela offre un moyen d'améliorer l'efficacité de la détection des modifications, car elle n'a besoin que de mettre à jour
les modifications uniques. Elle suit également des modèles réactifs s'intégrant avec des opérateurs observables pour transformer les données.
FormControl
renvoie toujours une nouvelle valeur lorsque la valeur du contrôle est mise à jour.