Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在更改双向绑定模型后向模板驱动的表单添加自定义错误?_Angular_Forms_Validation_Two Way Binding_Custom Error Handling - Fatal编程技术网

Angular 如何在更改双向绑定模型后向模板驱动的表单添加自定义错误?

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;

在我的Angular应用程序中,我有一个模板驱动的表单,带有双向绑定的输入字段。如果提交失败,我想显示一个带有一般消息的错误。提交完成且失败后,我要做的第一件事是更改表单中使用的模型。然后,我向表单控件添加了一个错误

之后,将使用新的模型值更新表单。但是,错误也被删除了。所以我想在那一点上它已经被再次验证了

下面是经过编辑的简化情况变体:

HTML表单

<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']”“
检查显式错误。