【发布时间】:2019-02-04 20:34:49
【问题描述】:
这个问题可能是重复的,但我尝试用谷歌搜索这个问题的正确方法或解决方案。所以这个问题很简单,就像标题中所说的那样。如何在 Angular 4 formBuilder 中以简洁的结构或正确的方式显示验证错误消息。
我有一个现有代码在表单中显示验证错误,但以硬编码方式或混乱的代码结构。下面是我的代码
html 文件
<ion-input #firstName class="input-cover" (tap)="focusToTopFields('firstName')" id="firstName" formControlName="firstName" type="text" placeholder="First Name *"
[class.invalid]="form.controls['firstName'].errors && (form.controls['firstName'].dirty || form.controls['firstName'].touched)"
[class.valid]="!form.controls['firstName'].errors && (form.controls['firstName'].dirty || form.controls['firstName'].touched)"></ion-input>
<!-- Validation for First Name -->
<div *ngIf="form.controls['firstName'].errors && (form.controls['firstName'].dirty || form.controls['firstName'].touched)">
<small class="error-message" *ngIf="form.controls['firstName'].errors.required">
First name is required.
</small>
<small class="error-message" *ngIf="form.controls['firstName'].errors.minlength">
First name must be atleast 3 characters long.
</small>
<small class="error-message" *ngIf="form.controls['firstName'].errors.pattern">
First name cannot accept numeric characters or special characters.
</small>
</div>
ts 文件
在 formBuilder 组内
firstName: ["", Validators.compose([Validators.minLength(3), Validators.maxLength(40), Validators.pattern("[a-zA-Z ]*"), Validators.required])],
现在代码仍然可以理解发生了什么。但是想象一下,如果我有一个很大的表格来填写大量的输入字段,这会是什么样子。这将无法维护或变得一团糟。
是的,我可以使用一些组件通过Input decorator 显示错误消息,但我仍在寻找一种方法,如何不对我的 html 文件中的所有验证消息进行硬编码
如果有人可以提供帮助,我们将不胜感激。 提前致谢。
【问题讨论】:
标签: angular validation ionic-framework ionic3 formbuilder