Winkel: Zum vorhandenen Satz von Validatoren hinzufügen Formcontrol
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
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.)
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));