Angolare: aggiungere al set esistente di validatori Formcontrol

Nov 26 2020

Come posso aggiungere o eseguire il push a un set esistente di Validator su FormControl? Voglio aggiungere come array. La seguente risposta li imposterà solo tutti in una volta.

In Angular, come aggiungere Validator a FormControl dopo aver creato il controllo?

Angular - Aggiungi / rimuovi dinamicamente validatori

newFormControl.setValidators([Validators.required])
newFormControl.setValidators([Validators.pattern("^[0-9]*$")])
newFormControl.setValidators([Validators.maxLength])

Risposte

GyörgySzy Nov 26 2020 at 15:21

SetValidators () RIMUOVE i validatori precedenti, quindi potresti voler raccogliere i tuoi validatori separatamente, e per esempio tenerli in due variabili, e impostarli con un setValidators () secondo necessità.


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

Quindi in questo modo non è necessario impostarli uno per uno.

(Poiché i validatori non sono memorizzati in un array indside setValidators (), devi inviare tutti i validatori a setValidators con una sola chiamata.)

Noname Nov 27 2020 at 10:03

Puoi impostare un array con new Array<ValidatorFn>();e spingere i validatori di seguito individualmente.

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