来自商店的 ngrx select 值 - 如果值为空,则填充该值
ngrx select value from store - if value is null populate the value
Angular 5, NGRX 5
首次加载我的应用程序时,我的商店中有一个空列表。这是我的应用程序中多个组件使用的列表。
我想做的是 select 商店的清单:
this.terminals$ = this.store$.select(...);
如果列表为空,我想使用 action/effect:
填充列表
this.store$.dispatch(new TerminalActions.GetTerminals());
是否可以在 select 中执行此操作?
即调用 select,如果列表为空,调用一个效果来填充列表?
我想在 select 中执行此操作,以便我使用此列表的每个组件都可以调用 select,而不必 运行 执行操作填充列表。
你可能不喜欢这个答案,但 selector
是而且应该保持纯粹(输入,输出,无副作用)。因此,选择器不应分派操作。
如果你不想重复这个逻辑或者派发这些动作,你可以看看router guards。有关详细信息,请参阅 Todd Motto 的 https://toddmotto.com/preloading-ngrx-store-route-guards。根据您的实施,这可能 "freeze" 导航,直到数据在商店中可用。
Angular 5, NGRX 5
首次加载我的应用程序时,我的商店中有一个空列表。这是我的应用程序中多个组件使用的列表。
我想做的是 select 商店的清单:
this.terminals$ = this.store$.select(...);
如果列表为空,我想使用 action/effect:
填充列表this.store$.dispatch(new TerminalActions.GetTerminals());
是否可以在 select 中执行此操作?
即调用 select,如果列表为空,调用一个效果来填充列表?
我想在 select 中执行此操作,以便我使用此列表的每个组件都可以调用 select,而不必 运行 执行操作填充列表。
你可能不喜欢这个答案,但 selector
是而且应该保持纯粹(输入,输出,无副作用)。因此,选择器不应分派操作。
如果你不想重复这个逻辑或者派发这些动作,你可以看看router guards。有关详细信息,请参阅 Todd Motto 的 https://toddmotto.com/preloading-ngrx-store-route-guards。根据您的实施,这可能 "freeze" 导航,直到数据在商店中可用。