禁用带有表单域的列表

时间:2018-09-06 15:42:09

标签: angular forms html-lists

我有一个字符串下拉列表,我正在尝试使用表单控件来切换是启用还是禁用下拉列表。从我的角度来看,启用工作正常,但是对于禁用,我试图一次进行两次表单更新,这会引起问题。

我首先将accountType修补为空,然后尝试禁用。问题是,因为我要两次更新表单,所以该字段不会在ui中被禁用。我可以通过使用timeout来禁用它,但是我宁愿使用一些更优雅的东西。我尝试将[attr.disable]添加到mat-select标记中,但是没有执行任何操作。

html

<mat-form-field>
  <mat-select formControlName="accountType">
      <mat-option [value]="type" *ngFor="let type of myTypes"> {{type}}</mat-option>
  </mat-select>
</mat-form-field>

ts

toggleAccountType(serviceName: string) {
    if (serviceName !== 'A' && serviceName !== 'B' && serviceName !== 'C') {
      /** these two lines are the problem **/
      this.inheritedForm.patchValue({accountType: null});
      this.inheritedForm.get('accountType').disable();
    } else {
      this.inheritedForm.get('accountType').enable();
    }
  }

0 个答案:

没有答案