Zum Beispiel habe ich diesen Code, der word
mit Validator für minlength
6 Zeichen initialisieren. Dann, wenn die Länge word
ist> 4 minlength
ist auf 8 Zeichen eingestellt.Warum setValidators() verwenden neue Validatoren bei der nächsten Änderung und nicht sofort
Problem ist, dass Änderung nicht sofort sichtbar ist, wenn Sie fünftes Zeichen eingeben, aber es ist sichtbar, nachdem Sie sechstes Zeichen eingeben oder wenn Sie ein oder mehrere Zeichen löschen.
this.registerForm = this.formBuilder.group({
word: [null, [Validators.required, Validators.minLength(6)]
}, {validator: this.validateNumber});
validateNumber(input: AbstractControl) {
if(input.get("word").value != null && input.get("word").value.length > 4) {
input.get("word").setValidators([Validators.required, Validators.minLength(8)]);
}
}
Ich erstelle dieses Beispiel auf plunker. Wenn Sie mit der Eingabe in das Eingabefeld beginnen, gibt es einen Fehler für minlength
, der sich von 6 auf 8 ändert, wenn Sie den sechsten und nicht den fünften Buchstaben eingeben.
Warum brauchen Sie sogar die minLength von 6, wenn es tatsächlich 8 ist? –
Es ist nur ein Beispiel –
Können Sie versuchen, 'input.updateValueAndValidity()' am Ende aufzurufen? –