ngrx从存储中选择值-如果值为null,则填充值

时间:2018-10-30 21:26:12

标签: angular ngrx ngrx-effects

Angular 5,NGRX 5

第一次加载我的应用程序时,我的商店中有一个空列表。这是我的应用程序中多个组件使用的列表。

我想做的是从商店中选择列表:

this.terminals$ = this.store$.select(...);

如果列表为空,我想使用动作/效果填充列表:

this.store$.dispatch(new TerminalActions.GetTerminals());

是否可以在select中执行此操作?

即调用select,如果列表为空,则调用一个效果来填充列表?

我想在选择中执行此操作,这样我使用此列表的每个组件都可以调用选择,而不必执行操作即可填充列表。

1 个答案:

答案 0 :(得分:2)

您可能不喜欢这个答案,但是selector是并且应该保持纯净(输入,输出,无副作用)。因此,选择器不应调度动作。

如果您不想重复此逻辑或调度这些操作,则可以查看路由器防护。有关更多信息,请参见Todd Motto的https://toddmotto.com/preloading-ngrx-store-route-guards。根据您的实现,这可能会“冻结”导航,直到商店中有可用数据为止。