Winkel: Zum vorhandenen Satz von Validatoren hinzufügen Formcontrol

Nov 26 2020

Wie füge ich einen vorhandenen Satz von Validatoren in FormControl hinzu oder verschiebe ihn? Ich möchte als Array hinzufügen. Die folgende Antwort setzt sie alle auf einmal.

Wie füge ich in Angular Validator zu FormControl hinzu, nachdem das Steuerelement erstellt wurde?

Angular - Dynamisches Hinzufügen / Entfernen von Validatoren

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

Antworten

GyörgySzy Nov 26 2020 at 15:21

Mit setValidators () werden die vorherigen Validatoren ENTFERNT. Daher möchten Sie Ihre Validatoren möglicherweise separat erfassen und beispielsweise in zwei Variablen speichern und bei Bedarf mit einem setValidators () festlegen.


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

Auf diese Weise müssen Sie sie nicht einzeln einstellen.

(Da die Validatoren nicht in einem Array indside setValidators () gespeichert sind, müssen Sie alle Validatoren mit nur einem Aufruf an setValidators senden.)

Noname Nov 27 2020 at 10:03

Sie können ein Array mit festlegen new Array<ValidatorFn>();und die unten stehenden Validatoren einzeln drücken.

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