1

別のページに移動したい場合は、次のコードを使用できますか?ここでAngular2:ルータからパス配列を取得する方法は?

this.router.navigate(['section1', 'section1-children', 'my-page']); 

、あなたが知っているように、array内のすべてのstringは、関連するコンポーネントをロードモジュールのルーティングファイルで宣言パスです。

ここで、navigateメソッドを使用するコンポーネントがルーティングパスについて不自然な場合は、現在の完全パスに対応する文字列の配列を取得する方法はありますか?

私は、次のようなコードを持っているしたいと思います:

let path:Array<string> = this.router.getCurrentArray(); 
path.push('my-page'); 
this.router.navigate(path); 

私はActivatedRouteサービスを利用しようとしましたが、私が見つけた唯一の有用な方法は以下の通りです:

this.activatedRoute.pathFromRoot; 

返します文字列ではなく、Routeの配列。

私の目的を達成するためのより良い方法をご存知ですか?

答えて

2

あなたがRouterインスタンスでのみ動作

this.router.routerState.snapshot.url 

でフルパスを得ることができる必要があり

path = this.router.config[x].path; 

からのエントリの一つで

this.router.navigate('../' + path); 

を使用することができますこのルートのためにルータによって追加されたコンポーネントに注入されます。

+0

'config'は私が探していたものではありません。 2番目の方法は、 'navigate'の代わりに' navigateByUrl'メソッドを使用するように強制します。私は正しい? – smartmouse

+0

'this.activatedRoute.pathFromRoot;'は、すべてのセグメントを一度に提供します。これは自分自身を反復するよりも優れています。 'config'は利用可能な(子)ルートを取得するためのものですが、私はあなたの質問を少し誤解しました。 'pathFromRoot'エントリから' path'セグメントを連結するとどうなりますか? https://angular.io/docs/ts/latest/api/router/index/UrlSegment-class.html#!#path-anchor –

+0

私の意見では、どちらの方法、あなたまたは私の意見でも、「汚い」方法があります現在のパス。それは良い方法ではないことは奇妙です。 – smartmouse

関連する問題