私は自分のコンポーネントに対して生成している反応的なフォームを持っています。ユーザーが使用して基準を選択することができる約5つのオプションの選択入力があります。Angular2 - 反応性のあるフォームのプロパティ
私はこれにいくつかのエラーメッセージを実装しようとしていますが、何かを明らかにすることはできません。私は、フィールドのいずれかがtouched
前に無効なメッセージを示すになっていることを確認するに取り掛かることができるか
<span *ngIf="importForm.invalid && importForm.touched" class="help-block text-danger">Please select one piece of data to filter by.</span>
すべてのフィールドはオプションであるため、が、少なくとも1つの要求され、?
コンポーネント:
/**
* Render the form in the UI to allow
*
* @memberof FilterSearchComponent
*/
renderForm() {
this.importForm = this.fb.group({
costCenter: [[]],
area: [[]],
silo: [[]],
department: [[]],
location: [[]],
segment: [[]],
role: [[]]
},
{
validator: (formGroup: FormGroup) => {
return this.validateFilter(formGroup);
}
});
}
/**
* Checks to see that at least one of the filter
* options have been filled out prior to searching
* for employees.
*
* @param formGroup
*/
validateFilter(formgroup: FormGroup) {
if (formgroup.controls["costCenter"].value.length ||
formgroup.controls["area"].value.length ||
formgroup.controls["silo"].value.length ||
formgroup.controls["department"].value.length ||
formgroup.controls["location"].value.length ||
formgroup.controls["segment"].value.length ||
formgroup.controls["role"].value.length
) {
return null;
} else {
return { noFilterOptions: true };
}
}
私は本当に私はそれを助けることができれば、私のHTML内の各コントロールのための||
声明を行うにはしたくありません。
私のフォームに入力したものが、個別に見たいものを指定するのではなく、他の方法で触れているのを見ることができますか?
私はこれを確認し、回答として投稿するための便利な何かを持っていますが、 'FormGroup'と' FormControlはありません'(おそらく' FormArray')は 'touched()'メソッドを持つ 'AbstractControl'から継承しています。あなたは 'FormGroup'でこのメソッドを呼び出すことができ、それが子フォームのいずれかに触れているかどうかを調べることができます。' FormControl'の 'value'プロパティを使用して、フォームコントロールの名前を知っている必要があります。 –
答えはどうやって行ったのですか?あなたの要件に一致しましたか? :) – Alex