コンポーネントにリアクティブフォームがあり、touched
と等しい入力のすべてにtrue
プロパティを設定したい。私の現在のコードはこれを行いますが、エラーCannot set property touched of #<AbstractControl> which has only a getter
:
addressForm: FormGroup;
...
this.addressForm = this._fb.group({
street: ["", [<any>Validators.required]],
city: ["", [<any>Validators.required]],
state: ["", [<any>Validators.required]],
zipCode: ["", [<any>Validators.required]],
country: ["", [<any>Validators.required]]
});
...
for (var key in this.addressForm.controls) {
this.addressForm.controls[key].touched = true;
}
すべての入力のtouched
値をtrue
に設定するにはどうすればよいですか?
これを行うには、非常に簡単な方法があります:markAsTouched
。フォームグループで使用するのに十分なはずです。
this.addressForm.markAsTouched()
何らかの理由ですべてのコントロールを手動でマークする場合は、コントロール自体でこのメソッドを使用できます。
markAsTouched
は、すべてのフォーム要素が継承するAbstractControl
のメソッドです。好奇心から、あなたは@angular/forms/src/model.d.ts
宣言ファイルを使用して、フォームオブジェクトのさらに興味深いメソッドを見つけます。または、単に documentation にアクセスしてください。
HTMLフォーム要素で#myForm="ngForm"
を使用する場合、HTMLでmyForm.submitted
にアクセスできるため、.touched
に煩わされる必要がない場合があります。