189 votes

Les contrôles angulaires 2 désactivés ne sont pas inclus dans le formulaire.value

J'ai remarqué que si je désactive un contrôle sur Angulaire à 2 forme réactive le contrôle ne sont pas inclus dans le formulaire.de la valeur. Par exemple, si je définis mon formulaire comme ci-dessous:

this.notelinkingForm = new FormGroup({
    Enabled: new FormControl(settings.Enabled, Validators.required),
    LinkToPreceeding: new FormControl({value: settings.LinkToPreceeding, disabled: !settings.Enabled}, Validators.required),
    LinkingTolerance: new FormControl({value: settings.LinkingTolerance, disabled: !settings.Enabled}, Validators.required)
});

et de vérifier la ce.notelinkingForm.valeur, si tous les contrôles sont activés puis sortie serait:

{"Enabled":true, "LinkToPreceeding": true, LinkingTolerance:"100"} 

Cependant, lors de certains contrôles sont désactivés, il serait:

{"Enabled":true} 

Remarquez comment les handicapés, les contrôles sont exclus.

Mon intention est que lorsque le formulaire changements que je veux être en mesure de passer à la forme.valeur avec toutes les propriétés à mon API rest. Ce ne sera pas possible, évidemment, si elle ne contient pas les éléments désactivés.

Suis-je manqué quelque chose ou est-ce le comportement attendu? Est-il un moyen de dire Angulaire pour inclure les éléments désactivés dans le formulaire.de la valeur?

Vos commentaires sont les bienvenus.

403voto

Sasxa Points 3969

Vous pouvez utiliser:

 this.notelinkingForm.getRawValue()
 

De docs :

Si vous souhaitez inclure toutes les valeurs indépendamment de l'état désactivé, utilisez cette méthode. Sinon, la propriété value est le meilleur moyen d'obtenir la valeur du groupe.

13voto

Une autre option que j'utilise est:

this.form.controls['LinkToPreceeding'].value;

12voto

eper Points 71

Merci @Sasxa de m'avoir apporté 80% de ce dont j'avais besoin.

Pour ceux d’entre vous qui cherchent une solution au même problème mais pour les formulaires imbriqués, j’ai pu résoudre en changeant mon

 this.notelinkingForm.get('nestedForm').value
 

à

 this.notelinkingForm.getRawValue().nestedForm
 

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