Пожалуйста, смотрите образец: 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'.
Что я должен сделать, чтобы избавиться от ошибки?