私は2つのフォームフィールドを持っています。最初のフィールドが入力されていれば、2番目のフィールドは必須です。カスタムバリデータを使用してAngular2でこれを実行しようとすると、バリデータは初期化時および特定のフィールドが変更されたときにのみ起動されます。Angular2相互依存型フォームフィールドの有効性確認
ケース: - ユーザーがフィールド1を入力します - フィールド2は必須になりますが、ユーザーがフィールド2を実際に変更するまで(カスタム検証を実行するまで)はありません。
private createForm():void {
this.testForm = this._formBuilder.group({
'field1': [],
'field2': ['', this.validateRequired()]
});
}
private validateRequired(){
console.log("something", this);
let component = this;
return (control: Control): { [s: string]: boolean } => {
return component.testModel.field1 && !control.value {"required":true} : null;
}
}
このplunkrを参照してください:http://plnkr.co/edit/PEY2QIegkqo8BW1UkQS5?p=preview
編集:
this.testForm.controls['field1'].valueChanges.subscribe(
value => {
component.testForm.controls['field2].updateValueAndValidity();
}
)
:今、私はフィールド1のとvalueChangeに観測可能な加入とするため
のように、フィールド2に手動でチェックを実行して変更したとき
しかし、私はこれを行うためのより良い方法が必要であるように感じる。
あなただけの天気を知りたい場合は素晴らしい作品も参照してくださいhttp://stackoverflow.com/questions/31788681/angular2-validator-which-relies-on-multiple-form-fields/34582914#34582914 –