У меня есть реактивная форма, которую я создаю для своего компонента. Существует около 5 необязательных входов выбора, которые пользователь может выбрать для использования и выбора критериев.
Я пытаюсь реализовать некоторые сообщения об ошибках, но не могу ничего понять.
<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
, у которого есть методtouched()
. Вы должны иметь возможность вызвать этот метод дляFormGroup
и узнать, был ли затронут он или какой-либо из дочернихFormControls
... Вы также можете использовать свойствоvalue
FormControl
и перебирать значения без необходимости знать имена элементов управления формы... - person Sunil D.   schedule 25.07.2017