我有一个容器组件,其中有ChangeDetectionStrategy.OnPush
。我有一个Observable属性,该属性设置为Ngrx Store中的属性:
public isiShadowLocations$: Observable<IIsiShadowLocation[]>;
...
ngOnInit() {
this.isiShadowLocations$ = this.store.pipe(select(fromPlan.getIsiShadowLocations));
}
我正在尝试将此Observable传递给子组件,以使其在模板中呈现更改的值,如下所示:
<app-plan-isi-shadow-display [isiShadowLocations]="isiShadowLocations$ | async"></app-plan-isi-shadow-display>
在我的子组件中,我有一个@Input()
属性,如下所示:
@Input() isiShadowLocations: IIsiShadowLocation[];
最后在子模板中,我使用*ngFor
来使用数组,如下所示:
<div *ngFor="let isiShadowLocation of isiShadowLocations">
当我运行应用程序并使用Chrome Ngrx DevTools检查时,Store
中的array属性正在更改,但是我的父容器组件似乎没有意识到这些更改(或者确实如此)没有正确地传递给孩子)。我的印象是async
管道可以使用OnPush
进行更改检测。难道我应该将Observable传递给子对象,然后在子组件中使用async
管道?
任何人都可以看到我要去哪里了吗?