Angular 如何在更改双向绑定模型后向模板驱动的表单添加自定义错误?
在我的Angular应用程序中,我有一个模板驱动的表单,带有双向绑定的输入字段。如果提交失败,我想显示一个带有一般消息的错误。提交完成且失败后,我要做的第一件事是更改表单中使用的模型。然后,我向表单控件添加了一个错误 之后,将使用新的模型值更新表单。但是,错误也被删除了。所以我想在那一点上它已经被再次验证了 下面是经过编辑的简化情况变体: HTML表单Angular 如何在更改双向绑定模型后向模板驱动的表单添加自定义错误?,angular,forms,validation,two-way-binding,custom-error-handling,Angular,Forms,Validation,Two Way Binding,Custom Error Handling,在我的Angular应用程序中,我有一个模板驱动的表单,带有双向绑定的输入字段。如果提交失败,我想显示一个带有一般消息的错误。提交完成且失败后,我要做的第一件事是更改表单中使用的模型。然后,我向表单控件添加了一个错误 之后,将使用新的模型值更新表单。但是,错误也被删除了。所以我想在那一点上它已经被再次验证了 下面是经过编辑的简化情况变体: HTML表单 <form #form="ngForm"> <div *ngFor="let vehicle of vehicles;
<form #form="ngForm">
<div *ngFor="let vehicle of vehicles; let i = index">
<span>{{ vehicle.name }}</span>
<mat-form-field>
<input
name="odoInputVehicle{{ vehicle.id }}"
required
type="number"
matInput
min="0"
[(ngModel)]="vehicle.distance"
[disabled]="vehicle.submittable === false"
/>
</mat-form-field>
</div>
</form>
<mat-error *ngIf="this.form.control.hasError('submissionFailed')">
<div>Error submitting the value(s).</div>
</mat-error>
在表单更改模型后,如何向表单添加一直附加到表单的错误。模型更新后是否会触发一个我可以用来监听的事件?您可以这样使用:
<span *ngIf=" this.form.control.errors" class="someClassREDTEXT">Form has error</span>
表单有错误
您可以检查this.form.control.error是否有错误,并显示错误消息您可以使用类似以下内容:
<span *ngIf=" this.form.control.errors" class="someClassREDTEXT">Form has error</span>
表单有错误
检查this.form.control.error是否有错误,并在ts文件中显示类似的错误消息
this.quizForm.form.controls.email.setErrors({ unique: true });
和Html
<div class="form-group">
<label for="email">Email:</label>
<input
type="text"
class="form-control"
[ngClass]="{
inputWrong:
(quizForm.submitted ||
quizForm.controls['email']?.touched) &&
quizForm.controls['email'].invalid
}"
id="email"
name="email"
pattern="[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"
[email]="true"
[readonly]="isLoggedIn"
[(ngModel)]="email"
required
/>
<span
class="error_span"
*ngIf="quizForm.controls['email']?.errors?.unique"
>Email is already registered.</span
>
</div>
电邮:
电子邮件已注册。
像ts文件中的这样
this.quizForm.form.controls.email.setErrors({ unique: true });
和Html
<div class="form-group">
<label for="email">Email:</label>
<input
type="text"
class="form-control"
[ngClass]="{
inputWrong:
(quizForm.submitted ||
quizForm.controls['email']?.touched) &&
quizForm.controls['email'].invalid
}"
id="email"
name="email"
pattern="[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"
[email]="true"
[readonly]="isLoggedIn"
[(ngModel)]="email"
required
/>
<span
class="error_span"
*ngIf="quizForm.controls['email']?.errors?.unique"
>Email is already registered.</span
>
</div>
电邮:
电子邮件已注册。
代替描述,提供非工作代码代替描述,提供非工作代码哇,这确实有效!this.form.control.hasError('submissionError')
不起作用时,这怎么可能起作用呢?如果你想个性化错误,你可以在你的ngid中这样做。form.control.errors['submissionFailed'],我认为可能会起作用!try It无效,因为this.form.control.errors
为空。即使我在OnInit
函数中将错误设置为false
初始化错误时也是如此。如果表单提交失败,请打印this.form.controls.errors,如果读取“submissionFailed”,则表示添加了自定义错误。可以使用*ngIf=“this.form.control.errors&&this.form.control.errors['submissionFailed']”“
检查显式错误。哇,这确实有效!当this.form.control.hasError('submissionError')
不起作用时,这怎么可能起作用?如果您想要个性化错误,可以执行此.form.control.errors['submissionFailed']在您的ngid中,我认为migth是有效的!试试看,它不起作用,因为this.form.control.errors
为空。即使我在OnInit
函数中将errors设置为false
初始化错误,也不起作用。如果表单提交失败,请打印您的this.form.controls.errors,如果您阅读了“submissionFailed”“这意味着添加了自定义错误。可以使用*ngIf=“this.form.control.errors&&this.form.control.errors['submissionFailed']”“
检查显式错误。