私は最新の angular2 フォームで作業しており、この一見単純な作業に苦労しています。現在のコンポーネントのプロパティを読み取り、それに基づいて入力を検証できるカスタム検証関数が必要です。plnkr の例を次に示します。
http://plnkr.co/edit/bNFjNsCfhYjoqKaRZgQU?p=preview
この例では、常に必要なユーザー名フィールドと、顧客が既存の顧客である場合にのみ必要となるパスワード フィールドがあります。
私のフォーム宣言は次のとおりです。
this.loginForm = this.formBuilder.group({
username: ["", Validators.required],
password: ["", this.passwordRequiredForExistingCustomer]
});
私の検証機能は次のとおりです。
passwordRequiredForExistingCustomer(control: FormControl): {[key: string]: boolean} {
let val = control.value;
if (this.state === "existingCustomer" && !val) {
return {"required": true};
}
return null;
}
ただし、検証関数内で現在のコンポーネントを参照できません。[既存の顧客] ボタンをクリックすると、コンソールにエラーが表示されます。これは、カスタム関数がトリガーされ、見つからない場合this
です。
何か不足していますか?このタスクを達成するには、どのアプローチを取る必要がありますか?
ありがとう、
ハリー