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