从另一个模块访问路由参数

时间:2017-03-09 10:07:33

标签: angular angular2-routing

我的应用程序中有一个没有路由模块的Core模块和一个带路由模块的功能模块。在我的功能模块的一个组件中,我可以在构造函数中使用它来访问路由参数:

this.route.params.subscribe((params: Params) => {
  console.log("params['searchTerm']");
  console.log(params['searchTerm']);
  this.searchTerm = params['searchTerm'];
});

现在在我的Core模块的一个组件中,我想通过使用上面的代码来访问params。由于路径是在功能模块路由模块中定义的,因此当我尝试访问参数时,我只是未定义。

我怎样才能访问params?

2 个答案:

答案 0 :(得分:0)

我的情况完全相同。路由在功能模块中定义,核心模块的布局组件可以访问参数。有用!请确保你:

  1. 导入{RouterModule}来自' @ angular / router&#39 ;;在核心模块
  2. Inject' private activatedRoute:ActivatedRoute'在核心组件构造函数中。

答案 1 :(得分:0)

这是可能的解决方案之一:

constructor(
  private route: ActivatedRoute,
  private router: Router,
) {
  router.events.subscribe(e => {
    let currentRoute = this.route.root;
    while (currentRoute.children[0] !== undefined) {
      currentRoute = currentRoute.children[0];
    }
    if (e instanceof NavigationEnd) { // you can do it for exact phase
      console.log(currentRoute.snapshot.params);
    }
  });
}