Aujourd'hui, je me suis rendu compte d'un comportement inattendu (pour moi) des formes réactives dans Angular 5. Le serveur recevait de l'application une chaîne avec la valeur "null" au lieu de la valeur null, ce que je voulais.
J'ai fait le test suivant:
https://stackblitz.com/edit/angular-rjrspr?file=app%2Fapp.component.html
Comme vous pouvez le voir dans l'image ci-dessous, si j'utilise [value]="null"
dans la sélection, le champ devient "null" (chaîne de caractères) en tant que valeur. Cependant, si j'utilise [ngValue]="null"
, il obtient la valeur null
attendue.
Je pensais que value
était destiné aux formulaires réactifs, alors que ngValue
était destiné aux formulaires basés sur des modèles. J'aimerais savoir s'il est prudent d'utiliser les deux dans mes formulaires (j'utilise toujours des formulaires réactifs) et s'il existe une explication pour le comportement différent.
Merci!
Son ok pour utiliser value
ou ngValue
.
La seule différence entre les deux est que value
est toujours une chaîne, où dans ngValue
vous pouvez passer un objet
const items = ["foo", "bar", "baz"]
<option
*ngFor="let item of items"
[value]="item"
>
{{item}}
</option>
en utilisant [value]
lorsque l'une des options est sélectionnée, la valeur sera foo
, bar
, baz
<option
*ngFor="let item of items"
[ngValue]="item"
>
{{item}}
</option>
en utilisant [ngValue]
lorsque l'une des options est sélectionnée, la valeur sera 0: foo
, 1: bar
, 2: baz
L'attribut value spécifie la valeur d'un élément. Ainsi, il sera toujours nul. DOM est une arborescence d'objet car [ngValue] est une directive angulaire qui donne un objet en tant que résultat.
Les formes réactives angulaires facilitent un style de programmation réactif qui favorise la gestion explicite des données circulant entre un modèle de données non-interface utilisateur (généralement extrait d'un serveur) et un modèle de formulaire orienté interface utilisateur qui conserve les états et les valeurs des contrôles HTML à l'écran. . Les formulaires réactifs offrent la facilité d'utilisation des modèles réactifs, des tests et de la validation.
Avec les formulaires réactifs, vous créez une arborescence d'objets de contrôle de formulaire angulaire dans la classe de composant et les liez aux éléments de contrôle de formulaire natifs du modèle de composant, à l'aide des techniques décrites dans ce guide.
Vous créez et manipulez des objets de contrôle de formulaire directement dans la classe de composant. La classe de composants ayant un accès immédiat au modèle de données et à la structure de contrôle de formulaire, vous pouvez insérer les valeurs du modèle de données dans les contrôles de formulaire et extraire les valeurs modifiées par l'utilisateur. Le composant peut observer les changements d'état de contrôle de formulaire et réagir à ces changements.
Vérifiez la doc angulaire pour plus d’informations: https://angular.io/guide/reactive-forms
value
doit être une chaîne mais ngValue
- est ce que vous voulez. La valeur ne sera pas liée à la liste de sélection si le type de valeur est int pas chaîne.
il n'y a pas beaucoup de différence entre value et ngValue.
La seule différence est que lorsque vous avezString
EN ENTR&EACUTE;E, UTILISEZ value
et lorsqueObject
EN TANT QU'ENTR&EACUTE;E, UTILISEZ ngValue
.