2017-02-13 5 views
1

ルーティングに関係しないコンポーネントでActivatedRouteを取得するにはどうすればよいですか?角2、グローバルにアクティブなルートを取得する方法は?

私はこのように試してみました:

constructor(
    private _route: ActivatedRoute, 
) { 
    this._route.params.subscribe((params: Params) => { 

    console.log(params['param1'], params['param2']); 

    }); 

} 

をそれは、未定義の未定義ログに記録します。

答えて

1
constructor(private router:Router) { 
    router.events 
    .filter(e => e instanceof NavigationEnd) 
    .forEach(e => { 
    console.log(router.routerState.root); 
    console.log(router.routerState.root.firstChild); 
); 
} 
+0

驚くばかりです。本当にありがとう!ちょっと複雑なオブジェクトセットを出力します。どのようにパラメータを取得するのですか?そして入れ子にされたパラメータ? – BBaysinger

+1

'... root.params ['id']'または '... firstChild.params ['id']'は動作するはずです。上記のコードでは、何かを混ぜ合わせなかった場合、https://angular.io/docs/ts/latest/api/router/index/ActivatedRouteSnapshot-interface.htmlを取得する必要があります。 –

+0

サービス内からルーターを取得する方法はありますか?私のメインサービスはこの情報を必要とします。そうでなければ、私の唯一の選択肢は、コンポーネント内のルータの状態を取得し、私のサービスにパラメータを渡すことです。これはちょっとハッキリしているようです。 – BBaysinger

関連する問題