从Angular

时间:2017-08-24 09:20:04

标签: angular angular4-router

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

所以我做了一项特殊服务 routeReader 接收任何路由器 ActivatedRoute ,然后在探索之前获取.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;
  }