Обнаружение изменений в setTimeout

#angular

#angular

Вопрос:

Из того, что я прочитал, это должно работать довольно легко (без каких-либо конкретных команд NgZone), но я не вижу этого в своем приложении ngrx.

У меня есть этот шаблон

 <app-resto
  [resto]='selectedResto'
  [idx]='selectedRestoIndex'
  (action)='action.next($event)'
  [@selectedResto]='selectedRestoState'>
</app-resto>
 

И этот контроллер

 ngOnChanges() {
    console.log('OUT:', this.selectedResto.qname);
    setTimeout(() => {
        this.selectedResto = this.restos[this.selectedRestoIndex];
        // this.selectedResto = Object.assign({}, this.restos[this.selectedRestoIndex]);

        console.log('IN:', this.selectedResto.qname);
    }, 500);
}
 

Что я вижу selectedRestoIndex , так это то, что при изменениях <app-resto> происходит рендеринг этого входа и выхода из журналов. Затем IN регистрируется, но дальнейших изменений нет <app-resto> . Обратите внимание, как я пытался заставить selectedResto иметь другую ссылку.

Что я делаю не так?

Комментарии:

1. Вы changeDetectionStrategy onPush случайно не установили значение?

2. OMG — гениально. Я думал, что смогу это сделать, потому что я использовал ngrx и односторонний поток данных, но, думаю, по пути отклонился от чистого

3. OnPush должно быть установлено только в «немых» компонентах, которые сами по себе не определяют никакой логики и доступны только для представления.