提交后角材料重置表格

时间:2020-03-28 22:28:22

标签: javascript validation angular-material submit

我使用角形材料,并且具有通过反应验证的形式。

我想在提交后重设表单,我的问题是在提交后,我看到我的错误出现在表单中。

输入示例:

<mat-form-field>
  <mat-label>Prénom</mat-label>
  <input matInput name="prenom" formControlName="prenom">
  <mat-error *ngIf="f.prenom.hasError('required') && submitted">
    Ce champ est obligatoire
  </mat-error>
  <mat-error *ngIf="f.prenom.errors?.maxlength && !f.prenom.hasError('required')">
    le prénom ne peut pas dépasser 20 caractères
  </mat-error>
</mat-form-field>

我尝试添加一个提交的变量和this.myForm.markAsUntouched(),但无法正常工作

onSubmit() {
  this.submitted = true;
  if (this.myForm.invalid) {
    return;
  }
  alert('Form Submitted succesfully!!!\n Check the values in browser console.');
  console.table(this.myForm.value);
  this.submitted = false;
  this.myForm.reset();
  this.myForm.markAsUntouched();
}

使用提交的变量,我看到消息错误消失了(下面的黄色部分),但没有边框和红色。

enter image description here

你们有什么想法要解决吗?

1 个答案:

答案 0 :(得分:1)

我能够通过将#formDirective =“ ngForm”放在表单标签中来解决此问题

<form [formGroup]="myForm" (ngSubmit)="onSubmit()" #formDirective="ngForm">

并声明

@ViewChild('formDirective') private formDirective: NgForm;

然后您可以放入.resetForm()