2016-12-26 60 views
6

我試圖建立面包屑以顯示在我的「殼」組件(一個與<router-outlet>)。我正在注入Angular的Router服務,並通過將其從routerState.root向下遍歷其firstChild(或children[0])屬性遍歷到空,從而構建包含當前顯示的路由的(鏈接的)列表組件。結果是一個ActivatedRoute對象的鏈表。當我將定製數據附加到每個定義的路線(例如標題)時,我可以在運行時獲得(通過ActivatedRoute.data成員),因此我可以在麪包屑中顯示項目的名稱。如何將ActivatedRoute序列化爲Angular 2中的字符串?

但問題是與鏈接(網址)。 ActivatedRoute擁有關於鏈中特定路由的所有信息,但是我無法找到將其序列化爲單個字符串值的方式,以用作麪包屑中的鏈接。當然,我可以手動解析它,但對於如此重要​​的事情來說,這太費事了。 ActivatedRoute有urls(本身分裂),查詢參數,矩陣參數等所有在不同的屬性(其中一些甚至Observables,使不必要的複雜的東西)...但沒有單個字符串屬性,給出完整的URL(帶參數和一切)。

順便提一句,Router服務有serializeUrl()成員,它帶有UrlTree類型的參數,並將其轉換爲字符串。也許有一些轉換成ActivatedRouteUrlTree,這樣我就可以再使用Router.serializeUrl()方法..

簡單:我怎樣才能得到初始化字符串出ActivatedRoute(或ActivatedRouteSnapshot)對象的? (顯然,我自己寫的並不是完整的解析邏輯)。

看來如此重要的事情需要,因爲ActivatedRoute基本上解析字符串URL的表示(如果我正確理解這整個概念)...和Router甚至有輔助方法來字符串化UrlTree對象(這是從來沒有解釋如何檢索首先)...

回答

0

router.createUrlTree可以收到ActivatedRoute

@Component({ 
    selector: "foo" 
}) 
class Foo { 
    constructor(router: Router, route: ActivatedRoute) { 
    const urlTree = router.createUrlTree(["."], { relativeTo: route }); 
    console.log(router.serializeUrl(urlTree)); 
    } 
} 
0

儘量想到這個:

this.route.children[0].url.value 

應該陣列containind UrlSegmen與田間小路對象。 One UrlSegment =一條路徑路徑

相關問題