2016-05-15 8 views
0

子ルータのすべてのURLが変更されたときにイベントを発生させるにはどうすればよいですか? 以下のコードのように、ルートルーターのURL変更のイベントを発生させるために実装できますが、子ルーターにはできません。ルータが子ルータでサブスクライブする

私はrouter-deprecatedとAngular2 betaを使用していますが、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

Plunkerしてください! – micronyks

答えて

0

私は_router.parent.subscribeを使用することが期待得ることができます!ありがとう@yuzuri。

関連する問題