Ich entwickle ein Formular mit Angular2 FormBuilder mit benutzerdefinierten Validierung. Problem: In customValidator verwende ich this
, um auf das lokale Objekt data
zuzugreifen. Ich bekomme einen undefined
Fehler, wenn die Validierung ausgeführt wird.Angular2 FormBuilder: Verwenden von 'this' in einem benutzerdefinierten Validator
Es ist wie der CustomValidator sieht in einem anderen Objekt ausgeführt und somit die Änderung der this
Referenz
Frage: Wie kann ich einen Verweis von this
zum CustomValidator passieren?
export class Ast {
public data:any;
public myForm:FormGroup;
constructor(private _fb:FormBuilder) {
this.data = {foo: "bar"};
}
customValidator(c: FormControl) {
if (this.data.foo == "bar") { // This line crashes
// DO something
}
}
ngOnInit() {
this.myForm = this._fb.group({
some_field: ['', [<any>Validators.required], this.customValidator]
})
}
}
Ist es möglich, "this.data.foo" als Parameter an die Funktion "customValidator" zu senden? Wenn das so ist, wie? – Vanquiza
Nein: Angular ruft die Validator-Funktion auf und übergibt nur ein Argument. Aber Sie tun das, indem Sie die Funktion an "this" binden und "this" aus der Funktion heraus aufrufen. Sie könnten die Daten auch an eine Funktion übergeben, die die Validatorfunktion mithilfe des Schließmechanismus erstellt und zurückgibt. Aber eine Pfeilfunktion ist einfacher. –