2017-08-24 117 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

相關問題