146 votes

Comment obtenir une seule valeur d'un FormGroup ?

Je suis conscient que je peux obtenir les valeurs d'un formulaire en utilisant

JSON.stringify(this.formName.value)

Cependant, je veux obtenir une seule valeur du formulaire.

Comment dois-je m'y prendre ?

226voto

RemyaJ Points 2459

Vous pouvez obtenir une valeur comme ceci

this.form.controls['your form control name'].value

32 votes

this.form.controls.email.value fonctionne également sans les crochets, mais c'est à vous de choisir le style que vous préférez.

6 votes

Comme l'a dit @Julia, obtenir la valeur par la méthode "get()" est mieux que cela.

184voto

Julia Passynkova Points 8456

Oui, vous pouvez.

this.formGroup.get('name of you control').value

17 votes

Cela devrait être la bonne réponse puisque vous accédez par une méthode plutôt que d'obtenir les contrôles directement.

2 votes

Bien entendu, c'est également la méthode utilisée dans la documentation officielle. angular.io/guide/reactive-forms

37voto

BenRacicot Points 869

La notation par points perturbe la vérification du type, passez à la notation par crochets. Vous pouvez également essayer d'utiliser la méthode get(). J'ai lu que cela permettait également de conserver la compilation AOT.

this.form.get('controlName').value // safer
this.form.controlName.value // triggers type checking and breaks AOT

1 votes

Je suis d'accord avec le .get() doit toutefois se terminer par .value Je pense : this.form.get('controlName').value

3 votes

J'apprécie cette réponse car elle donne le POURQUOI. Merci.

18voto

billyjov Points 656

pour Angular 6+ et >=RC.6

.html

<form [formGroup]="formGroup">
  <input type="text" formControlName="myName">
</form>

.ts

public formGroup: FormGroup;
this.formGroup.value.myName

devrait également fonctionner.

3voto

user3059545 Points 9

Ce code fonctionne également :

this.formGroup.controls.nameOfcontrol.value

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X