0

updatOn: 'blur'Angular7 アプリケーションで フォーム非同期検証を使用しています。スタックブリッツ

この状況では、名前が一意かどうかを確認する必要があります (非同期検証)。

this.myForm.get('name').statusChanges.subscribe(status => {
    if (status === 'VALID') {
        // to save the name to database.
    } else {
        // to show some errors.
    }
});

問題は、このコードをどこに置くかです。

現在の方法

子コンポーネントでこれを試しました

@Input()
set myForm(myForm: FormGroup) {
  this._myForm = myForm;
  this.myForm.get('name').statusChanges.subscribe(status => {    // to subscribe statusChanges here.
    if (status === 'VALID') {
        // to save the name to database.
    } else {
        // to show some errors.
    }
  });
}

get myForm() {
  return this._myForm;
}


_myForm: FormGroup

出来た。しかし、フォーム検証を行うための属性が少なくとも 10 個あります。これにより、 this に追加されるコードが多すぎる@Input() set myForm() {}ため、別の関数でこれを行う必要があります。

@Inputというわけで、属性の statusChange をサブスクライブするのをやめました。ここにない場合、どこでこれを行う必要がありますか?

また、 の statusChange をサブスクライブできません。ngOnInit原因の値は で定義されていませんngOnInit

誰でも私を助けてください。

4

1 に答える 1