我有一个字符串下拉列表,我正在尝试使用表单控件来切换是启用还是禁用下拉列表。从我的角度来看,启用工作正常,但是对于禁用,我试图一次进行两次表单更新,这会引起问题。
我首先将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();
}
}