Я сталкиваюсь с ошибкой ExpressionChangedAfterItHasBeenCheckedError в моем Angular 8 веб-приложении. Я также столкнулся с этой проблемой ранее и решил ее с помощью setTimeout, но в этом случае она не работает.
У меня есть бесконечный скроллер в моем компоненте, который выглядит следующим образом:
<div class="search-results"
infiniteScroll
[infiniteScrollDistance]="0.2"
[infiniteScrollThrottle]="800"
[infiniteScrollDisabled]="isScrollBusy"
(scrolled)="onScroll()">
</div>
Так что, когда метод onScroll вызывается, я устанавливаю isScrollBusy = true, и после получения новых данных я возвращаю его в значение false
ниже приведена функция onScroll
onScroll() {
let self = this;
if (!this.isScrollBusy && !this.searchStatus) {
setTimeout(function () {self.isScrollBusy = true}, 0);
this.dataServ.getData().then(data=> {
if (data.length === 0)
setTimeout(function () { self.isScrollBusy = true }, 0);
else
setTimeout(function () { self.isScrollBusy = false }, 0);
});
}
}
Итак, первое назначение true работает нормально, но после извлечения данных я снова назначаю его ложным, и он продолжает выдавать ошибку.
Пожалуйста, руководство.
Спасибо Шрути Наир