【发布时间】:2019-02-06 14:19:22
【问题描述】:
我已经构建了一个模板驱动的表单,其中包含一个字段表。表的一行中的一个数据项具有这样的“路径名”字段。 (这是在 *ngFor 结构中)
<td>
<mat-form-field>
<input #fieldPath="ngModel" type="text" matInput [(ngModel)]="f.pathName"
name="pathname{{ row }}"
required appPathnameValidator appPathInUseValidator [parentId]="parent.id"
placeholder="Path name">
<mat-error *ngIf="fieldPath.errors?.pattern">Path Name cannot include white space or / character.</mat-error>
<mat-error *ngIf="fieldPath.errors?.required">Path Name is Required.</mat-error>
<mat-error *ngIf="fieldPath.errors?.pathInUse">Path Name Is In Use</mat-error>
</mat-form-field>
</td>
所以我有一个内置验证器和两个自定义验证器。当用户访问表单控件并离开它时,这些都起作用。但是,表单的初始化方式可能具有未通过验证的起始值。但是当时没有显示 mat-error 元素。
有什么方法可以强制验证这些字段而无需用户访问它们?
【问题讨论】:
-
文档说:
Errors are hidden initially and will be displayed on invalid form fields after the user has interacted with the element or the parent form has been submitted.所以听起来这就是它的工作方式。你能建立自己的错误处理而不使用mat-error元素吗? (参考:material.angular.io/components/form-field/…) -
您可以创建自定义错误状态匹配器:material.angular.io/components/input/…
-
@DeborahK 您的链接指向有关该主题的有用规范文本。我没有认为这是一个实质性问题,而不是一个常规的角度问题。
-
@AJT_82 Oy。这看起来确实是正确的方法
标签: angular