Angular: ajouter à l'ensemble existant de validateurs Formcontrol

Nov 26 2020

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

GyörgySzy Nov 26 2020 at 15:21

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.)

Noname Nov 27 2020 at 10:03

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));