ExpressionChangedAfterItHasBeenCheckedError: невозможно разрешить с помощью setTimeout - PullRequest
0 голосов
/ 29 января 2020

Я сталкиваюсь с ошибкой 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 работает нормально, но после извлечения данных я снова назначаю его ложным, и он продолжает выдавать ошибку.

Пожалуйста, руководство.

Спасибо Шрути Наир

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...