使用FormBuilder重置表单时,为什么会出现验证错误?

时间:2019-02-20 18:51:22

标签: angular forms validation reset formbuilder

我正在使用angular 6应用程序。我正在使用FormBuilder。我有一个看起来像这样的表格:

hive-import

这是一种非常简单的形式。文本输入和提交按钮:

enter image description here

如您所见,我在输入下出现错误提示,告诉用户“如果未输入邀请,则需要邀请评论”。

当用户点击“提交”时,邀请被发送,我将清除表单,如下所示:

  <form [formGroup]="createInvitationForm" (ngSubmit)="createInvitation()">
    <mat-form-field class="full-width-input">
      <input matInput type="text" formControlName="invitationComment" placeholder="Send a comment to the group(s)." required>
      <mat-error *ngIf="createInvitationForm.get('invitationComment').hasError('required')">
        Invitation comment required
      </mat-error>
    </mat-form-field>
    <button mat-raised-button type="submit" color="primary" [disabled]="selectedGroups.length === 0 || !createInvitationForm.valid">Send invitation to selected group(s)</button>
  </form>

但是,当我这样做时,表单看起来像这样:

enter image description here

换句话说,现在显示验证错误。

从某种意义上说,mat-error正在执行应做的事情:重置表单时,文本输入中没有数据,这会使表单无效,因此显示消息。但是从另一种意义上讲,它不应该表现为好像被重新初始化一样(即,表单在输入时就不会因为文本输入中没有数据而无效)。

如果我对reset()应该如何工作的期望落空了,请让我知道一种在不使表单无效的情况下重置表单的方法。

谢谢。

2 个答案:

答案 0 :(得分:0)

尝试添加以下部分this.createInvitationForm.setErrors(null);以重置表单控件的错误。

答案 1 :(得分:0)

惊悚片已经关闭。

是this.createInvitationForm.controls ['invitationComment']。setErrors(null);