ルータイベントを「リッスン」する必要があります。
作業のデモのための私のplunkerを参照してください:https://plnkr.co/edit/XJmOa7rmtvBpuJDfQ2Vd?p=preview
興味深い部分は、このコードスニペットです:
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
</div>
<a routerLink="/cmp1">cmp1</a><br />
<a routerLink="/cmp2">cmp2</a><br />
<a routerLink="/cmp3">cmp3</a><br />
<router-outlet></router-outlet>
`,
})
export class App {
name:string;
constructor(private _r: Router) {
this.name = 'Angular2'
this._r.events.subscribe(event => {
if (event instanceof RoutesRecognized) {
console.log('navigated to:', event.url);
console.log('route state', event.state);
console.log('');
}
else if (event instanceof NavigationEnd) {
// if u dont need the state, you could even use this event-type..
}
});
}
}
は、ルータのイベントに登録し、解雇されたイベントの種類を確認してください。 状態(params、queryParams、...)を使用する場合は、RoutesRecognized
-event-typeを使用することをお勧めします。あなただけの現在のurl
を取得する場合はNavigationEnd
- イベント型を使用することもできます。
私は私のapp.componentでこれを試しましたが、まだ何も得られていません。 –
詳細を投稿してください。多分もっと多くのコードであなたの質問を更新してください。 – mxii
それは各コンポーネントからのルートを得るうまく機能します。しかし私の考えは、私のメインのapp.componentでルートを取得することです。私はそれが理にかなっているか分からない。 –