私はAngular2のFormBuilderを使ってカスタムバリデーションを使ってフォームを開発しています。 問題:customValidatorで、this
を使用してローカルオブジェクトdata
にアクセスしています。検証が実行されると、undefined
エラーが発生します。Angular2 FormBuilder:カスタムバリデーターで 'this'を使用する
のCustomValidatorは別のオブジェクトで実行し、そのためthis
参照
質問に変化しているように見えます:はどのように私はのCustomValidatorへthis
の参照を渡すことができますか?
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]
})
}
}
"this.data.foo"を関数 "customValidator"にパラメータとして送信することはできますか?もしそうなら、どうですか? – Vanquiza
いいえ:Angularはバリデータ関数を呼び出し、1つの引数のみを渡します。しかし、関数を 'this'に束縛して、関数の内部から' this'にアクセスすることで、あなたはそれをやっています。クロージャーメカニズムを使用して、バリデータ関数を作成して返す関数にデータを渡すこともできます。しかし、矢印の機能は簡単です。 –