我有一个为我的组件生成的反应窗体。大约有5个可选的选择输入,用户可以选择使用并从中选择标准。Angular2 - 活性窗体属性
我想在此实现一些错误消息,但不能完全弄清楚什么。
<span *ngIf="importForm.invalid && importForm.touched" class="help-block text-danger">Please select one piece of data to filter by.</span>
由于所有字段是选项,但至少有一个是必须的,我怎么可能去检查该字段中的一个已显示无效消息touched
之前?
组件:
/**
* 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')从'AbstractControl'继承,''touch()'方法。你应该可以在FormGroup上调用这个方法,看看它是否已经触及子FormControls ...你也可以使用FormControl的value属性遍历值必须知道表单控件名称... –
它是如何与答案一起去的,是否符合您的要求? :) – Alex