У меня есть компонент с именем «mainHomeComponent». Внутри этого компонента у меня есть метод под названием «requestForPost». Этот метод вызывается внутри ngAfterViewInit() и когда полоса прокрутки достигает нижней части страницы.
Когда метод requestforPost завершен, я сохраняю результат внутри статической переменной в AppComponent.
Когда я перехожу к другому контроллеру и возвращаюсь к предыдущему, метод ngAfterViewInit() снова запускается. В это время я ищу свою статическую переменную, и если она установлена, я получаю ее содержимое вместо повторной отправки запроса.
Но когда моя полоса прокрутки снова достигла нижней части страницы, мой json обновился, а мой DOM - нет.
Код:
ngAfterViewInit()
{
console.log("after");
if(AppComponent.staticVar.length == 0)
{
this.requestForPost();
}
else
{
this.myList = AppComponent.staticVar;
}
}
requestForPost()
{
...
sendingRequest
...
(success) =>
{
this.myList = this.myList.concat(success);
AppComponent.staticVar = this.myList
})
}
Внутри метода requestForPost я вижу, что «myList» обновляется, но не в DOM.
Спасибо за помощь.
РЕДАКТИРОВАТЬ:
<eleC *ngFor="let item of myList;"></eleC >
РЕДАКТИРОВАТЬ 2 ЗАКРЫТО:
В конце концов мне удалось сделать это с помощью:
этот.мойСписок = этот.мойСписок
Я прочитал это решение по адресу: Angular2 ngFor OnPush Change Detection with Array Mutations а>
ngAfterViewInit
? На этом обнаружение изменений завершено, поэтому я бы не стал делать ставку на то, что изменения в модели отразятся в шаблоне. - person Tomek Sułkowski   schedule 24.07.2017