reactive forms 含まれるフォームの有効性ステータスの変化をリッスンし、いくつかのコンポーネントのメソッドを実行できるコンポーネントを持つ方法
[disabled]="#myForm.invalid"
のようなtemplateRefを使用すると、テンプレートの送信ボタンを簡単に無効にできますが、これにはコンポーネントのロジックは関係しません。
template forms 'doc を見て、方法が見つかりませんでした
status
ではなくvalue
のみを取得する場合は、statusChanges
を使用できます。
export class Component {
@ViewChild('myForm') myForm;
this.myForm.statusChanges.subscribe(
result => console.log(result)
);
}
データの変更が必要な場合は、valueChanges
のform
にサブスクライブし、this.myForm.status
を使用してフォームのステータスを確認できます。
export class Component {
@ViewChild('myForm') myForm;
this.myForm.valueChanges.subscribe(
result => console.log(this.myForm.status)
);
}
ステータスの可能な値は次のとおりです:VALID、INVALID、 保留中、またはDISABLED。
このようなことを行うと、有効性の変更を検出し、フォームがVALID
であるかINVALID
であるかに基づいてメソッドを実行できます。
this.myForm.statusChanges
.subscribe(val => this.onFormValidation(val));
onFormValidation(validity: string) {
switch (validity) {
case "VALID":
// do 'form valid' action
break;
case "INVALID":
// do 'form invalid' action
break;
}
}
フォーム全体の変更をサブスクライブし、そこにロジックを実装できます。
@ViewChild('myForm') myForm;
this.myForm.valueChanges.subscribe(data => console.log('Form changes', data));