web-dev-qa-db-fra.com

Angular2: Comment changer vierge de NgModel dans le code?

Lorsque vous modifiez le champ de NgModel, model.prisitne devient automatiquement true.

Lorsque vous soumettez le formulaire, cela ne change pas le "parfait", pas de question, ce n'est pas un bug.

Mais dans mon cas, je montre des erreurs lorsque "vierge" est vrai et lorsque je soumets le formulaire, je dois montrer des erreurs de validation et je pense que lorsque vous soumettez le formulaire, nous pouvons dire que les champs de ce formulaire ont été touchés, car vous pouvez ne soumettez pas le formulaire invalide. Mais dans Angular2, cela fonctionne différemment.

Donc, un moyen de dire que les contrôles/champs de formulaire sont touchés (vierge = vrai) dans le code/composant?

let email:AbstractControl = this.frm.form.controls['email'];

Définissez l'email "prisitne" true.

6
Grigor Aleksanyan
email.markAsPristine();
email.markAsTouched();
email.reset();

ou

this.frm.reset();

Voir aussi https://angular.io/docs/ts/latest/api/forms/index/AbstractControl-class.html

Vous pouvez utiliser cette méthode plus courte pour obtenir un contrôle

let email:AbstractControl = this.frm.get('email']);
6
Günter Zöchbauer

chaque contrôle de formulaire a ses différents états attachés.

vous pouvez vérifier n'importe quel état avec le code suivant,

this.frm.form.controls['email'].pristine;
this.frm.form.controls['email'].touched;

Pour référence. Découvrez ce plongeur et cliquez sur le bouton.

https://plnkr.co/edit/mJFftirG3ATDpnJRWmKN?p=preview

4
micronyks

À partir de Angular v4.4.5

markAsDirty()supprime l'état de contrôle parfait

markAsPristine()met le contrôle en état vierge

2
Kes