Forme angulaire updateValueAndValidity de tous les enfants contrôles

Dans mon Angulaire 4 app, j'ai un formulaire avec plusieurs champs.

À certains moments, j'ai besoin de forcer la mise à jour de leur validité, de sorte que je suis en train de faire:

this.form.get('control1').updateValueAndValidity();
this.form.get('control2').updateValueAndValidity();
this.form.get('control3').updateValueAndValidity();
//and so on....

et puis:

this.form.updateValueAndValidity();

cela fonctionne bien.

Cependant, je me demandais si il ya une meilleure façon d'accomplir la même chose, il suffit d'appeler une méthode sur le formulaire parent.

Selon ses la documentation, le updateValueAndValidity() méthode:

Par défaut, il permettra également de mettre à jour la valeur et la validité de son ancêtres.

mais dans mon cas, j'ai besoin de mettre à jour la valeur et la validité de son descendants. Si je peux me débarrasser de beaucoup de lignes de code.

  • Avez-vous essayé quelque chose pour voir si il n'mise à jour de ses descendants?
  • quelque chose comme ... ?
  • ...ne pas appeler les descendants des méthodes directement en premier? J'aurais pensé updateValueAndValidity s'appliquerait également aux formulaires enfants.
  • oui bien sûr, et il ne fonctionne pas
  • Question intéressante. Je pense qu'il n'est pas disponible hors de la boîte, il y a le même problème dans ce cas avec markAsDirty: github.com/angular/angular/issues/11774 je pense que vous devez faire de la solution de contournement et de réitérer les propriétés de l'objet parent et l'utilisation updateValueAndValidity sur chaque contrôle. Hmm. Il peut être utile tho qu'il serait accessible qu'à l'appeler sur le parent.
  • Voir la question connexe de quelques options: stackoverflow.com/questions/42235156/...