2016-04-27 171 views
1

目前我有:無法訂閱路由器在容器組件 - Angular2路由

import { Router } from 'angular2/router'; 

@Component({...}) 

export class Index { 
    constructor(public router: Router) { 
    this.router.subscribe({...}); 
    } 
} 

有這個組件等功能,但他們不相關的問題

我試圖把調試器和console.log()在訂閱功能,但無論我做什麼,我都無法得到任何事情發生。我也嘗試將router.subscribe()移動到ngOnInit(),結果相同。沒有。

我需要能夠將資源從「帳戶」切換到「用戶」或其他人,並根據URL的狀態進行適當的API調用。目前我不明白爲什麼這不應該起作用。有什麼明顯的我失蹤?不止一次訂閱路由器有限制嗎?我已經在另一個組件中做了它,它工作正常。

回答

0

我想你想

this.router.root.subscribe({...}); 

讓所有路線導航事件。

+0

This Works,thanks!但是,它帶來了一個小問題。現在我每訂閱一次路由器都會訂閱一個路由器,而不僅僅是當我改變站點某一部分的路徑時。 –

+0

你可以嘗試'this.router.parent.subscribe()',但這有點脆弱,因爲組件取決於嵌套的級別。無論如何,路由器會有較大的變化。如果它適合你,我會去找它,並在更新的路由器可用時重新訪問。 –

+0

我的組件的父路由器是根路由器,所以沒有多大幫助。您是否知道有任何方法可以訂購其他組件中可用的根路由器?我想避免多次訂閱路由器 –