2017-08-24 55 views
0

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

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

我能得到这样的:使用BarComponent内的角方法ID PARAM?
结构是这样的:

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

回答

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; 
    } 
+0

有趣的选择,很好,它不关心嵌套级别。糟糕的时刻 - 递归,如果应用程序有很多孩子。但是,无论如何,这很有帮助。 – WeekendMan

相关问题