使用路由器存储在效果模块中导航时,如何获得激活的路线?

时间:2018-09-07 05:55:58

标签: angular-routing ngrx ngrx-router-store

我正在尝试调度相对于组件路线的路由器存储导航操作。路由跟踪日志显示,用于导航的相对路径是应用程序路径而不是组件路径。

 return of(
        new routerActions.Go({
          path: ['./', payload.rootPath],
          extras: { relativeTo: this.route },
        }),
      );

 constructor(
    private actions$: Actions,
    private route: ActivatedRoute,
  ) {}

我正在将ActivatedRoute注入我的效果模块构造函数中,这似乎是这里的问题。如何将激活的路线获取到组件之外,并将其传递给导航操作?

2 个答案:

答案 0 :(得分:4)

ActivatedRoute特定于每个路由组件。

这给您几个选择。

  1. 导航根路由以返回所需的数据。

let route = this.router.routerState.root;
while (route.firstChild) {
route = route.firstChild;
}

return route.snapshot;

  1. 从包中的路由组件传递ActivatedRoute。

  constructor(private store: Store<AppState>, private activatedRoute:ActivatedRoute) {}

  doSomething() {
    this.store.dispatch(new Action.YourAction({ id: actionId, route: activatedRoute });
  }
  
 

答案 1 :(得分:1)

通过 activatedRoute 对我不起作用。这就是我所做的。选择器 selectRouterUrl 从状态中选择当前 URL。

DefaultTCPHost = 'localhost'