そうです、問題は、this.form
まだ開始されていないときに変数 ( ) を参照しているためです。幸運なことに、あなたの場合、実際にはval2
フォーム コントロールでフォーム グループを参照する必要はありません。コードは次のように書き直すことができます。
let val1Control = this.formBuilder.control('', Validators.required);
this.form = this.formBuilder.group({
val1: val1Control ,
val2: [{value:'', disabled: val1Control.valid}]
});
ただし、このブロックは、の有効性disabled
を監視せずに val2 コントロールの値を開始するだけです。val1Control
これを行うには、にサブスクライブする必要がありますval1Control.statusChanges
。
let val1Control = this.formBuilder.control('', Validators.required);
let val2Control = this.formBuilder.control({value:'', disabled: !val1Control.valid});
this.form = this.formBuilder.group({
val1: val1Control,
val2: val2Control
})
val1Control.statusChanges.subscribe((newStatus) => {
if (val1Control.valid) {
val2Control.enable();
} else {
val2Control.disable();
}
});
これが作業中のプランカーです: http://plnkr.co/edit/kEoX2hN9UcY4yNS3B5NF