Если вы хотите использовать реактивные формы ... используя ngAfterViewInit
, вы можете программно пометить поле как прикосновенное, чтобы вызвать ошибку.
К сожалению, я не знаю, как это сделать через
управляемые шаблоном формы.
setTimeout(() => {
this.yourForm.controls['yourControl'].markAsTouched();
}, 0);
1012 * Revision *
Основываясь на моем первоначальном ответе и расширении моего ответа Абхишека, чтобы подтвердить, что вы можете делать это с помощью реактивных форм ... Я хотел также предоставить сценарий формы на основе шаблонов.
- Общая тема здесь, независимо от того, используете ли вы реактивные формы или формы на основе шаблонов, заключается в том, что вам необходимо программно пометить
ввод как коснулся ...
- В шаблонно-управляемых формах вам также нужно будет сделать
то же самое с помощью ссылки на шаблон, так что вы можете вызвать метод markAsTouched () для элемента управления в
Ваш крючок жизненного цикла ngOnInit.
Установите ссылку на шаблон для id и привяжите его к ngModel через #id="ngModel"
на входе ... вам также нужно будет присвоить имя на входе id с помощью name="id"
это требование привязки к ngModel.
<code><mat-form-field color="accent">
<input matInput placeholder="ID is required" required="true" [(ngModel)]="uniqueID" name="id" #id="ngModel">
</mat-form-field>
<div *ngIf="id.invalid && (id.dirty || id.touched)">
<mat-error *ngIf="id.errors.required">
ID is <strong>required</strong>
</mat-error>
</div>
<pre>id.errors: {{id.errors | json}}
Здесь вам нужно будет использовать @ViewChild
в вашем компоненте, чтобы получить ссылку на #id
и вызвать markAsTouched()
для элемента управления через ловушку жизненного цикла ngOnInit.
import {Component, OnInit, ViewChild} from '@angular/core';
@ViewChild('id') _id : any
ngOnInit(){
this._id.control.markAsTouched();
}