【发布时间】:2021-06-01 01:51:22
【问题描述】:
我目前正在处理Angular/Typescript 中的多个字段(超过 10 个字段)的表单,并且我想更正确地管理错误,而无需在我的 html 页面中重复代码。
这是一个表单示例:
<form [formGroup]="myForm">
<label>Name</label>
<input type="text" formControlName="name">
<p class="error_message" *ngIf="myForm.get('name').invalid && (myForm.submitted || myForm.get('name').dirty)">Please provide name</p>
<label>Lastname</label>
<input type="text" formControlName="lastname">
<p class="error_message" *ngIf="myForm.get('lastname').invalid && (myForm.submitted || myForm.get('lastname').dirty)">Please provide email</p>
<label>Email</label>
<input type="text" formControlName="email">
<p class="error_message" *ngIf="myForm.get('email').hasError('required') && (myForm.submitted || myForm.get('email').dirty)">Please provide email</p>
<p class="error_message" *ngIf="myForm.get('email').hasError('email') && (myForm.submitted || myForm.get('email').dirty)">Please provide valid email</p>
</form>
就我而言,我的表单有两种类型的验证:
- Html 验证:必需、maxSize 等。
- 返回验证:例如,无效的帐户、加载文件的大小等。
我尝试使用指令as mentioned here
<form [formGroup]="myForm">
<label>Name</label>
<input type="text" formControlName="name">
<div invalidmessage="name">
<p *invalidType="'required'">Please provide name</p>
</div>
<label>Lastname</label>
<input type="text" formControlName="lastname">
<div invalidmessage="lastname">
<p *invalidType="'required'">Please provide lastname</p>
</div>
<label>Email</label>
<input type="text" formControlName="email">
<div invalidmessage="email">
<p *invalidType="'required'">Please provide email</p>
<p *invalidType="'email'">Please provide valid email</p>
</div>
</form>
但即使使用此解决方案,代码也总是重复的,无法处理这两种类型的验证。
您还有其他方法吗?在这种情况下使用组件是否合适?如果可以,怎么做。
提前感谢您的投资。
【问题讨论】:
标签: javascript html angular typescript angular5