angular - 如何将@ngrx 效果隔离到特定的路由 url
问题描述
我想在我的延迟加载模块中隔离一堆@ngrx 效果,只有在模块相关的 url 处于活动状态时才能触发它们。所以如果我理解正确,效果是全局应用的,并且它们不依赖于 url,即使我的模块是延迟加载的,当这个 url 被激活时。所以在每一个效果中我都写了这样的东西
routeRelatedEffect$ = createEffect(() =>
this.actions$.pipe(
ofType(someAction),
withLatestFrom(this.store.pipe(select(selectRouterState))),
filter((rs) => rs.state.url.startsWith("/my-url"))
// ...
)
);
在这里我检查网址。我想知道是否有另一种方法可以做到这一点?也许某种全局过滤器?正确的方法是如何做到这一点?
解决方案
效果可以专门添加到延迟加载的模块中。
//app.module.ts -- add to root component
EffectsModule.forRoot([NotifyEffects, ChatListEffects])
//lazy loaded module
EffectsModule.forFeature([LazyLoadedEffect])
如果您想访问路线,我建议您探索@ngrx/router-store https://ngrx.io/guide/router-store
推荐阅读
- firebase - Is it weird idea to use youtube instead of firebase storage service for my app's video cloud storage?
- c# - Reading properties from TwinCAT function blocks using c#
- html - CSS 中 @media 的响应式设计
- sql-server - How can I check and remove duplicate rows?
- web - 请求从搜索引擎中删除存储的网站数据
- mongodb - How to convert datestrings in an array generated by $push in aggregation?
- excel - How to click on the second instance of drop down box with similar html code - Selenium VBA Excel
- pandas - Loop over pandas dataframe to create multiple networks
- firebase - got stuck in flutter splash screen : Exception: NoSuchMethodError: The method 'findAncestorStateOfType' was called on null
- database - Delete records from cassandra