由于ngIf语句,存储选择未运行

时间:2018-07-26 10:37:03

标签: angular ngrx

我正在忙于MeteorJS和RxJS,它们正在退出,但有时也有些混乱。 我当前的问题仅是Angular NgRx问题,与MeteorJS不相关。

如示例所示,有一个基于ngIf的{​​{1}}。此布尔值设置为showChannels。但是,内部的async for循环引用到了我的store.select。 但是,由于ngIf,永远不会执行管道中的运算符。这似乎是一个僵局。 如何启用订阅才能开始工作?

当我进行搜索时,它会将频道添加到商店中,并且如果false循环中没有store.select,则ngIf将起作用。

当我将if替换为ngFor时,它将起作用,但是当我进行一次搜索时,*ngIf="(channels$ | async) ?.length !== 0"将运行两次。

带有{subscribe}的带注释的store.select实际上可以使用tap很好地工作。关于不使用markForCheck时最好的解决方案的任何建议?

subscribe

2 个答案:

答案 0 :(得分:2)

使用ngIf as syntax

*ngIf="channels$ | async as channels"

答案 1 :(得分:0)

如果您有多个订阅并且它们不是嵌套的,那么您也可以使用shareshareReplay(1)。如果所有订阅都同时进行,请使用share,否则应使用shareReplay(1)