0

我正在使用 Angular4。我有一些 BarComponent 显示在 app.component 模板中(对于几乎所有页面,它就像菜单栏)。我想获取“属于”另一个组件的路由器参数,而不是 BarComponent 的子项/子项。
例如,我有路线:

/some-section-name/:id{here may be sub-routes}

我可以使用 BarComponent 中的 Angular 方法获得这个 :id 参数吗?
结构如下:

|- app.component
   |- bar.component
   |- (lazy load) some section
       |- here is the component that has this :id param
4

1 回答 1

1

我不得不多次面对这个问题,没有找到 angular 已经提供的任何东西来解决它。

所以我做了一个特殊的服务routeReader接收任何RouterActivatedRoute,然后.root.snapshot在探索整个children树之前取它。

它可能会帮助你。

这是只读取主分支的方法之一,递归读取整个树并没有太多改变。

getParamsFromTop(route: ActivatedRouteSnapshot) {
    let paramsMap = {};
    let routeCursor = route;
    while (routeCursor) {
      paramsMap = {...paramsMap, ...routeCursor.params};
      routeCursor = routeCursor.children[0];
    }
    return paramsMap;
  }

编辑1:如果您放置根路由快照,这样的东西应该可以工作。

getParamsRecurse(route: ActivatedRouteSnapshot) {
    let paramsMap = {...route.params};
    for (let i = 0; i < route.children.length; i++) {
      paramsMap = {...paramsMap, ...this.getParamsRecurse(route.children[i])};
    }
    return paramsMap;
  }
于 2017-08-24T09:34:38.577 回答