角度变化检测OnPush-如何将可观察到的Ngrx存储从容器传递到子组件

时间:2019-05-10 14:05:57

标签: angular ngrx

我有一个容器组件,其中有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管道?

任何人都可以看到我要去哪里了吗?

0 个答案:

没有答案