【发布时间】:2022-01-18 03:42:56
【问题描述】:
我尝试使用由 FormControl 控制的表单来控制 mat-slide-toggle。
这意味着我的 mat-slide-toggle 的 disabled 属性取决于 FormControl 值。更准确地说,如果没有设置 FormControlValue,我想禁用切换。
表格如下:
<mat-form-field>
<mat-label i18n="@@main.level">Level</mat-label>
<mat-select [formControl]="levelControl" >
<mat-option *ngFor="let level of levelList" [value]="level.value">
{{level.viewValue | titlecase}}
</mat-option>
</mat-select>
</mat-form-field>
我不能直接使用 levelControl.value 来设置是否禁用我的切换,因为此切换会生成一个动态组件,并且此方法会生成 ChangedAfterItHasBeenChecked 错误。
所以我在我的组件中定义了一个 Observable:
disableToggle: Observable<boolean>;
ngOnInit() {
this.disableToggle = this.levelControl.valueChanges.pipe(filter(next => next.level === ''));
}
我将它用于切换如下:
<mat-slide-toggle [disabled]="(disableToggle | async)"> </mat-slide-toggle>
但没有任何反应,切换始终处于启用状态。 有没有人有解决方案? 感谢您的帮助!
【问题讨论】:
标签: angular typescript rxjs