首页 > 解决方案 > 如何将@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"))
      // ...
    )
  );

在这里我检查网址。我想知道是否有另一种方法可以做到这一点?也许某种全局过滤器?正确的方法是如何做到这一点?

标签: angularngrxngrx-effects

解决方案


效果可以专门添加到延迟加载的模块中。


//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


推荐阅读