別のフォームフィールドの値を確認する必要があるangular2でバリデータを作成しようとしています。私はこれをしようとしたところで試した2つのシナリオを持っています。別のフォームフィールドに依存するAngular2バリデータ
シナリオ1、フォームフィールドは、次のようになります。
Form = this._fb.group({
ansat: ['', [<any>Validators.required]],
helbred: ['', this.someValidator('ansat')],
});
私は上記の二つのフィールドを持っている、と私は検証関数で「someValidatorを」「ansat」の値をチェックできるようにしたいと思います。 someValidatorは、次のようになります。私の機能で
someValidator(key: string) {
return (group: FormGroup) => {
console.log(group);
console.log(group.controls[key].value);
}
}
、グループは私のformgroupのためのすべての正しい情報が含まれていますが、「コントロール」は、私がansat」の値を取得することはできませんを意味し、未定義である
シナリオ。 2、フォームフィールドには、次のようになります。
this.myForm = this._fb.group({
ansat: ['', [<any>Validators.required]],
helbred: ['', c => Validators.compose([
this.someValidator(c,
group => group.controls['ansat'].value === 0
),
])]
});
そして、これは私のsomeValidator機能である:
conditional(c, conditional) {
console.log(conditional);
console.log(c);
if(c.parent != undefined || c._parent != undefined){
if(c._parent.controls['ansat'].value === 0){
console.log(c._parent.controls['ansat'].value);
}
}
return null;
}
この場合、コントロール "c"は正しい情報を持ち、割り当てられているグループの親を含みますが、同じグループの兄弟を取得するためにアクセスできません。
条件付きのパラメータの場合、私は働くことができない関数でグループを送信しようとしました。
質問: "helbred"と呼ぶバリデーターの中の "ansat"の値にアクセスできるようにしたいと思います。これはどうすればいいですか?
ご協力いただきありがとうございます。
お寄せいただきありがとうございます!私はしかし、質問があります。これを使用して、null(有効)を返す代わりに、ansatが0のIFフィールドを必要なフィールドにする必要があります。どうすればいい? – Vanquiza
私が送ったプランナーで、someValidator関数はコントロールの値をチェックできます。簡単な例のための更新を参照してください – Riv
うーん、私はしようと言い換える。私は、私の場合、一般的に条件検証を使用できる必要があります。 「必須」の場合は、何らかの形で「Validators.required」を返します。これは可能ですか? – Vanquiza