请查看示例:https ://stackblitz.com/edit/angular-bvcrcz
我<mat-checkbox [ngModel]="row.IsVerified" [disabled]="row.IsVerified" (ngModelChange)="setTrue()"></mat-checkbox>
的模板中有。
该setTrue
方法如下所示:
setTrue = () => {
ObservableOf(67).subscribe(_ => {
this.row.IsVerified = true; // This throws a ExpressionChangedAfterItHasBeenCheckedError!!!
});
}
我想要实现的是:单击复选框不应立即更改 ngModel 值,而是应触发对服务器的调用(以更新服务器上的值),并在成功响应代码ngModel
后将true
.
反过来,设置ngModel
应该禁用复选框以禁止用户再次单击它。
但是,我收到一个错误(在控制台中)说:ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'ng-untouched: true'. Current value: 'ng-untouched: false'.
我应该怎么做才能摆脱错误?