Angular: ajouter à l'ensemble existant de validateurs Formcontrol
Comment ajouter ou pousser vers un ensemble existant de validateurs sur FormControl? Je veux ajouter en tant que tableau. La réponse suivante ne les définira tous à la fois.
Dans Angular, comment ajouter Validator à FormControl après la création du contrôle?
Angulaire - Ajouter / supprimer dynamiquement des validateurs
newFormControl.setValidators([Validators.required])
newFormControl.setValidators([Validators.pattern("^[0-9]*$")])
newFormControl.setValidators([Validators.maxLength])
Réponses
SetValidators () SUPPRIME les validateurs précédents, vous pouvez donc vouloir collecter vos validateurs séparément, et par exemple les conserver dans deux variables et les définir avec un setValidators () si nécessaire.
const validators1 = [Validators.required, Validators.pattern("^[0-9]*$"), Validators.maxLength(10)])]
const validators2 = [Validators.required]
if( if_you_want_all_three_validators ){
newFormControl.setValidators(validators1)
} else {
// by default you want only one validator:
newFormControl.setValidators(validators2)
}
Ainsi, vous n'avez pas besoin de les définir un par un.
(Comme les validateurs ne sont pas stockés dans un tableau à côté de setValidators (), vous devez envoyer tous les validateurs dans setValidators avec un seul appel.)
Vous pouvez définir un tableau avec new Array<ValidatorFn>();
et pousser les validateurs ci-dessous individuellement.
let validatorList = new Array<ValidatorFn>();
validatorList.push(Validators.required);
validatorList.push(Validators.pattern("^[0-9]*$"));
validatorList.push(Validators.maxLength(item.characterLimit));
newForm.addControl('test', new FormControl(d'5', validatorList));