J'utilise angular 4 pour créer un validateur personnalisé sous forme réactive sur un élément FormArray
qui est un tableau. Cela fonctionne sur la charge initiale, cependant si j'ajoute un élément au tableau, puis supprime cet élément, la validation Validator.required
n'est pas définie.Mise à jour de la validité de la propriété FormArray après modification de validité
fromArray -> FormGroup
let customItemsValidator: Array<any> = item.selectType === 'custom' && item.required ?
[Validators.required] : [];
return this.formBuilder.group({
customItems: [[], customItemsValidator],
})
principale forme sur les principaux component.ts
this.appForm = this.formBuilder.group({
option: this.formBuilder.array([]),
items: this.formBuilder.array([])
});
je peux construire la forme et il fonctionne à 100%, j'ai un bouton d'envoi qui est désactivé Si le formulaire n'est pas valide et le chargement initial, le bouton reste désactivé jusqu'à ce que j'ajoute un élément à la propriété customItems
. Une fois que je supprime l'élément ajouté, le bouton Soumettre est toujours activé même si maintenant il doit être désactivé car il est requis et n'a aucune valeur.
la méthode remove
selectOptionsCustomRemove(customItem, customIdx: number, idx: number) {
pullAt(this.items.at(idx).get('customItems').value, customIdx);
}
Il supprime l'élément, mais la validité ne change pas sur le formulaire.
J'ai essayé avec le updateValueAndValidity()
après le pullAt
mais cela ne fonctionne pas semblent fonctionner.