<form [formGroup]="companyDetailsForm">
<div class="form-group">
<input ....>
<i *ngIf="companyDetailsForm.controls.selectedCompanyRaw.errors != null &&
companyDetailsForm.controls.selectedCompanyRaw.errors.empty">* текст empty-ошибки</i>
Когда пользователь нажимает сохранение формы, в коде идёт обращение к API для валидации данных. Если сервис вернул ошибку, то выполняется:
this.companyDetailsForm.controls["selectedCompanyRaw"].setErrors({ 'empty': true });
В итоге на форме под полем появляется текст ошибки. Т.е. работает как и ожидается.
Но есть пара вопросов:
1. Возможно ли как-то сократить текст условия 'ngIf'? Если пробую использовать неполное имя контрола, т.е. без 'companyDetailsForm.controls.', то код просто не находит сам контрол. А если убираю первую проверку на 'errors != null', то второе условие генерирует ошибку, что не может прочитать свойство 'empty' у 'null'. А шарповский оператор '?.' тут не рализован. Как-то очень громоздко получается.
2. Как реализовать сокрытие текста ошибки как только пользователь зафокусился в поле? Или как только начал что-нибудь вводить. Т.е. не в момент следующей валидации по субмиту, а именно по факту активности пользователя в поле безотносительно какой-либо валидации очистить 'errors'.