Angular 如何将@ngrx效果隔离到特定路由url

Angular 如何将@ngrx效果隔离到特定路由url,angular,ngrx,ngrx-effects,Angular,Ngrx,Ngrx Effects,我想在我的延迟加载模块中隔离一堆@ngrx效果,以便只有在模块相关url处于活动状态时才能触发它们。所以,如果我理解正确,效果是全局应用的,它们不依赖于url,即使我的模块是延迟加载的,当这个url被激活时。所以我写了这样的东西 routeRelatedEffect$ = createEffect(() => this.actions$.pipe( ofType(someAction), withLatestFrom(this.store.pipe(se

我想在我的延迟加载模块中隔离一堆@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])
如果您想访问路由,我建议您探索@ngrx/路由器商店

是的,当然可以,但一旦加载此模块,效果仍然存在,无论我们是否稍后离开该路线
//lazy loaded module
EffectsModule.forFeature([LazyLoadedEffect])