Когда я пытаюсь использовать [ngClass] в своем приложении Angular, я получаю следующую ошибку:
ExpressionChangedAfterItHasBeenCheckedError: выражение изменилось
после того как это было проверено. Предыдущее значение: 'ngClass: undefined'.
Это работает, когда я вызываю изменение после того, как получил ошибку, проблема, кажется, во время инициализации.
Вот HTML:
<div class="switch-wrapper">
<button [ngClass]="loginSelected ? 'selected' : ''" (click)="selectLogin()">
Login
</button>
<button [ngClass]="signupSelected ? 'selected' : ''" (click)="selectSignup()">
Signup
</button>
</div>
А вот и ТС:
export class LoginComponent implements AfterContentInit {
loginSelected = true;
signupSelected = false;
constructor(private cdRef: ChangeDetectorRef) {
}
ngAfterContentInit() {
this.cdRef.detectChanges();
}
selectLogin() {
this.loginSelected = true;
this.signupSelected = false;
}
selectSignup() {
this.loginSelected = false;
this.signupSelected = true;
}
}
Этот вопрос задавался здесь много раз, но предложенные решения, похоже, не работают для меня. Вещи, которые я пробовал:
- Не используется ChangeDetector.
- Внесение изменений, а затем вызов .detechChanges ().
- Вызов .detechChanges () и внесение изменений.
- Просто инициализировать значения.
- Использование ngOnInit и различных типов ngAfter *** ().
- Любые комбинации вышеперечисленного.
Если бы кто-то мог мне помочь, я был бы очень признателен. Я знаю, что ошибка, вероятно, с моей стороны, и это сводит меня с ума. Спасибо!