angular - 在多个 MatSelect 中,重新启用的复选框显示为已禁用
问题描述
使用 Angular Material,我想在一段时间内禁用多个 <MatSelect> 中的复选框(因为数据是从 API 检索的)。我可以成功地做到这一点,但是复选框的 CSS 类不会变回来。换句话说,该复选框在功能上处于启用状态,但 CSS 显示为禁用。这是材料缺陷还是我可以解决的问题?
示例:https ://stackblitz.com/edit/angular-jqzx99
零件:
export class AppComponent {
@ViewChildren(MatOption) matSelectOptions: QueryList<MatOption>;
public isPaused = false;
public optionData = ['Foo', 'Bar', 'Baz'];
/**
* Disable MatSelect checkboxes for 2 seconds
*/
public disableCheckboxes(): void {
this.isPaused = true;
this.matSelectOptions.forEach(option => option.disabled = true);
setTimeout(() => {
this.isPaused = false;
this.matSelectOptions.forEach(option => option.disabled = false);
}, 2000);
}
}
模板:
<mat-form-field>
<mat-select multiple
[disabled]="isPaused"
(selectionChange)="disableCheckboxes()">
<mat-option *ngFor="let option of optionData">
{{option}}
</mat-option>
</mat-select>
<mat-placeholder>Example</mat-placeholder>
</mat-form-field>
<p id="loadingStatus">{{isPaused ? 'Pausing…' : ''}}</p>
解决方案
似乎以编程方式禁用 MatOptions 对象并不是一个好主意。
因此,仅使用isPaused进行选择和选项工作正常
零件:
export class AppComponent {
@ViewChildren(MatOption) matSelectOptions: QueryList<MatOption>;
public isPaused = false;
public optionData = ['Foo', 'Bar', 'Baz'];
/**
* Disable MatSelect checkboxes for 2 seconds
*/
public disableCheckboxes(): void {
this.isPaused = true;
setTimeout(() => {
this.isPaused = false;
}, 2000);
}
}
模板:
<h3>Disabled MatSelect Checkbox Problem:</h3>
<hr>
<mat-form-field>
<mat-select multiple
[disabled]="isPaused"
(selectionChange)="disableCheckboxes()">
<mat-option *ngFor="let option of optionData" [disabled]="isPaused">
{{option}}
</mat-option>
</mat-select>
<mat-placeholder>Example</mat-placeholder>
</mat-form-field>
<p id="loadingStatus">{{isPaused ? 'Pausing…' : ''}}</p>
推荐阅读
- oracle - Oracle 高级队列
- django - Python按月将列表拆分为各种列表
- mysql - 使用 StreamSets 从 Kafka 消费者向 MySQL 写入数据
- python - 使用python脚本连接到mysql数据库
- html - 我可以使用以下代码(html、css)使我的网站与 RTL 兼容吗?
- r - 使用 R 中的行组为简单方程的结果添加新行
- go - 可以使用很多匿名函数吗?
- gradle - 传递依赖的 gradle force 版本不起作用。似乎没有排除、覆盖或强制适用
- c - 如何使指针指向数组中的所有元素?
- excel - 求和公式错误:显示 1,73472E-17 而不是 0