Je voudrais markAsDirty
tous les contrôles à l'intérieur d'un FormGroup
.
Réponses
Trop de publicités?L'on a accepté la réponse est correcte pour une plate forme de structure, mais ne permet pas de répondre entièrement à la question d'origine. Une page web peut exiger imbriquée FormGroups et FormArrays, et nous devons tenir compte de cela pour créer une solution robuste.
public markControlsDirty(group: FormGroup | FormArray): void {
Object.keys(group.controls).forEach((key: string) => {
const abstractControl = group.controls[key];
if (abstractControl instanceof FormGroup || abstractControl instanceof FormArray) {
this.markControlsDirty(abstractControl);
} else {
abstractControl.markAsDirty();
}
});
}
À l'aide de @Marcos réponse, j'ai créé une fonction qui peut être appelée le passage d'un formGroup comme paramètre, et c'est la marque de chaque formGroup enfants contrôles sale, juste pour le rendre utilisable à partir de plusieurs endroits dans le code de la mettre à l'intérieur d'un service, par exemple.
public touchAllFormFields(formGroup: FormGroup): void {
Object.keys(formGroup.controls).forEach((key) => {
formGroup.get(key).markAsDirty();
});
}
j'espère que ça aide ;)