Ich habe einen Eingang mit einem CustomValidator namens fooValidator
(was es tut irrelevant ist hier, es ist nur ein eigener Prüfer, die die Eingabe bestätigen, wenn es bis zu einem gewissen regexp correponds):Angular: Validierung nach dem ngModelChange ausgeführt
<form #contratForm="ngForm">
<input type="text"
class="validate"
[(ngModel)]="foo"
name="foo"
ngControl="foo"
fooValidator
(ngModelChange)="blah($event)"
required
/>
</form>
und in meiner Komponente:
blah(event) {
if(this.contratForm.controls.foo.valid){
console.log("Valid")
}
}
"Gültig" wird nie in meiner Konsole angezeigt. Das passiert, wenn ngModelChange vor der Validierung ausgeführt wird. Ich kann meine blah
Funktion in eine setTimeout
verpacken und "Gültig" würde erscheinen. Gibt es eine Möglichkeit, ohne einen Hacky setTimeout
zu tun?
Ist der Asynchron-Validator verwenden? –
Überhaupt nicht, es nur überprüfen, ob die Eingabe von einem Regexp übereinstimmt. Soll es ohne setTimeout funktionieren? – Scipion
Sie können 'statusChanges' abonnieren, wie in https://angular.io/docs/ts/latest/guide/reactive-forms.html#!#observe-control für' valueChanges' gezeigt. –