javascript - Angular 6 表单在提交和重置后返回验证错误

标签 javascript typescript angular6 angular-reactive-forms angular2-form-validation

我使用的是 angular 6,我有一个表单和一个按钮。当我按下按钮时,应用程序会在表单上方显示表单数据,然后我调用 form.reset()。但在表单重置后,输入字段变为红色,因为我在表单中设置了所需的字段。哪里有问题?

app.html

<form [formGroup]='fuelForm'>
      <mat-form-field class="input input2">
        <input matInput placeholder="Nozzle name" formControlName="nozzleName">
      </mat-form-field>
      <mat-form-field class="input input2">
        <input matInput type="number" min="1" id="nozzleNumber" formControlName="nozzleNumber" placeholder="Nozzle number"  >
      </mat-form-field>
      <mat-form-field class="input input4">
        <mat-select placeholder="Fuel type" formControlName="fuelType">
          <mat-option *ngFor="let item of fuelList" [value]="item">{{item}}</mat-option>
        </mat-select>
      </mat-form-field>
      <button mat-icon-button class="circle_button" (click)="add()">
        <mat-icon class="plus_icon">add_circle_outline</mat-icon>
      </button>
    </form>

app.ts

export class DialogNozzleComponent {

fuelForm :FormGroup;

  fuelList = ['Petrol', 'Super petrol', 'Euro4 petrol', 'Gasoline', 'Euro4 gasoline'];
  nozzleItem = [
    {
      nozzleName: 'Nozzle',
      nozzleNumber: '1',
      fuelType: 'Super petrol'
    },
    {
      nozzleName: 'Nozzle',
      nozzleNumber: '2',
      fuelType: 'Gasoline'
    }
  ];

  constructor(public fb : FormBuilder) { 
    this.fuelForm = fb.group({
      nozzleName: {value:'Nozzle', disabled: true},
      nozzleNumber: [null, Validators.required],
      fuelType: [null, Validators.required]
    });
  }

  add() {
    const formValue = this.fuelForm.value;
    formValue.nozzleName = this.fuelForm.controls['nozzleName'].value;
    this.nozzleItem.push(formValue);
    this.fuelForm.controls['nozzleNumber'].reset();
    this.fuelForm.controls['fuelType'].reset();
  }
}

最佳答案

你试过吗

this.fuelForm.reset();
this.fuelForm.markAsPristine();

关于javascript - Angular 6 表单在提交和重置后返回验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52014198/

相关文章:

html - 如何使用 Angular 2/Typescript 限制输入字段中的特殊字符

javascript - Angular 5 material snackbar 仅针对自定义 ErrorHandling 无法正确显示,否则可以正常工作

angular6 - Angular 6 的角度 Material 多级菜单?

javascript - 以 Angular 形式设置键和值

angular - 将 HTML 片段附加到 Angular 6 中的 View

javascript - 匹配多行正则表达式 Javascript

javascript - 计算列表列表的总和

javascript - 在其中一个原型(prototype)函数中调用 JavaScript 对象的构造函数是否正确?

javascript - JS 在使用 .push() 时防止重复

javascript - 在 Typescript 中使用 "as const"而不添加 "readonly"修饰符?