У меня угловая реактивная форма с валидаторами (взято со схемы, но обращаться к ней нужно по мере необходимости). Элемент управления недействителен, когда форма инициирована, пока она все еще нетронута, не тронута и не загрязнена. Есть ли предположения, почему это происходит\как этого избежать?
требуемый контроль реактивной формы недействителен, пока нетронутый
Ответы (2)
использовать, напр.
<div *ngIf="name.invalid && (name.dirty || name.touched)"
class="alert alert-danger">
...
</div>
Зачем проверять грязный и тронутый? Вы можете не захотеть, чтобы ваше приложение отображало ошибки до того, как пользователь сможет отредактировать форму. Проверки на наличие грязных и прикосновений предотвращают отображение ошибок до тех пор, пока пользователь не сделает одно из двух: изменит значение, превратив элемент управления в грязный; или размывает элемент управления формой, устанавливая элемент управления на касание.
Все необходимые элементы управления формой, которые отмечены как обязательные, как показано ниже в форме
createFormGroup() {
return new FormGroup({
email: new FormControl('', [Validators.required, Validators.email]),
mobile: new FormControl('', [Validators.required]),
country: new FormControl('', [Validators.required])
});
}
поэтому вышеприведенная форма управления электронной почтой, мобильным телефоном и страной будет недействительной, поэтому пользователь отключит кнопку отправки или покажет какое-либо сообщение пользователю
Итак, здесь вы можете отображать, когда пользователь коснулся поля, как показано ниже.
<input formControlName="mobile">
<span *ngIf="mobile.invalid && mobile.errors.required">
Mobile is required.
</span>
<span *ngIf="mobile.invalid && mobile.errors.invalidNumber">
Value has to be a number.
</span>
Надеюсь, это поможет.