2016-05-15 41 views
0

如何在子路由器上的每個URL更改上觸發一些事件? 我可以實現引發根路由器中的URL更改事件,如下面的代碼,但我不能在子路由器。路由器在子路由器中訂閱

我使用的是路由器棄用和Angular2測試版,而不是RC。

// myapp.component.ts 
@RouteConfig([ 
    { 
    useAsDefault: true, 
    name: 'Main', 
    path: '/...', 
    component: MainComponent, 
    }, 
]) 
export class MyAppComponent { 
    constructor(private _router: Router) { 
    _router.subscribe((url: string): void => { 
     // Fire on every URL change 
     // e.g. URL "/" to "/sub1", "/sub1" to "/sub2" 
    }); 
    } 
} 

// main.component.ts 
// URL:/
@RouteConfig([ 
    { 
    useAsDefault: true, 
    name: 'Sub1', 
    path: '/sub1', 
    component: Sub1Component, 
    }, 
    { 
    name: 'Sub2', 
    path: '/sub2', 
    component: Sub2Component, 
    }, 
]) 
export class MainComponent { 
    constructor(private _router: Router) { 
    _router.subscribe((url: string): void => { 
     // Does not fire... 
    }); 
    } 
} 

// sub1.component.ts 
// URL: /sub1 
export class Sub1Component {} 

// sub2.component.ts 
// URL: /sub2 
export class Sub2Component {} 

(當然,我省略import語法和裝飾在上面。)

+0

爲什麼你不能在孩子一樣?你有錯誤嗎? –

+0

通過使用'router.location()'並根據URL更改執行操作。 –

+0

請注意! – micronyks

回答

0

我能得到預期的使用_router.parent.subscribe! 謝謝@yuzuri。