【发布时间】:2019-11-25 03:30:39
【问题描述】:
我正在使用 angular 8 和 angular 材料来编写我的网站。
我创建了一个带有formGroup 的表单,我希望能够使用*ngIf 通过将实际输入元素用作参数来检查验证错误。
目前这是我的工作代码:
我有以下表格:
<form [formGroup]="queryForm" (submit)="runQuery()">
...
<mat-form-field>
<input matInput #timezone placeholder="Timezone" aria-label="Timezone" formControlName="timePeriodTimeZone"/>
<mat-hint>timezone as a number</mat-hint>
<mat-error *ngIf="hasError('timePeriodTimeZone','required')">timezone required</mat-error>
</mat-form-field>
...
</form>
在组件的类中,我实现了hasError() 函数,如下所示:
public hasError = (controlName: string, errorName: string) =>{
return this.queryForm.controls[controlName].hasError(errorName);
}
当然,我将queryForm 变量配置为由表单生成器创建的组。
有没有办法在不从类本身调用函数的情况下检查错误?
因为我在输入字段中添加了#timezone,所以我认为我将能够执行以下操作:
<mat-error *ngIf="timezone.hasError('required')">timezone required!</mat-error>
但我不能! :)
我更喜欢使用类似的东西,因为我想创建一个带有一些 mat-errors 的错误处理组件,因此我将能够在每个输入字段中重用它,并且我想将输入控件粘贴到它而不是整个表单组。
任何有关此问题的信息将不胜感激。
谢谢!
【问题讨论】:
标签: angular angular-material angular-forms angular8 mat-input