2017-03-26 8 views
1

角度2では、トップレベルのメニューが他にもあります。製品をクリックすると、トップレベルのルータアウトレットにある製品のリストが表示されます。個々の製品をクリックすると、個々の製品の詳細が表示され、バージョンなどをクリックすることができます。これまでのところ、これはネスト化されたルーターアウトレットをターゲットにしており、すべてがうまく機能します。働きリンクは次のようになります。ユーザーは特定のバージョンの詳細をクリックしたときにトップレベルルータのアウトレットを角度2でターゲット設定するにはどうすればよいですか?

http://localhost:4200/products/123/versions

しかし、私はより高いレベルのルーターリンクをターゲットにしたいです。だから、次のリンクを取得するとき:

http://localhost:4200/products/123/versions/2

これは、再び子ルータ-コンセントにロードされていませんが、私はある(製品(ProductComponentが)に示したのと同じルータ、コンセントをターゲットにしたいです最上位のルータ - アウトレット)。私は/ version/2を持っていると簡単に行うことができますが、そこに製品のコンテキストを保存したいと思います。また、トップレベルのコンセントの名前を調べましたが、これは私がこの名前を含むようにすべてのルータリンクを変更しなければならないということです。

私にはわからない別の選択肢がありますか、私が逃しているベストプラクティスはありますか? (角2つのドキュメントに良い例を見つけることができませんでした)

答えて

1

{ path: 'products/123/versions/:id', component: productsComponent }のように使用することができますあなたの子供のルートで、以下のコードを使用してみてください動的パスを使用することができます。

使用して特定のCMPからIDをキャプチャ:おかげで、私は理解して考える

this.paramsSub = this.activatedRoute.params.subscribe(params => this.param = params['id']);

routerLink = 'products/123/versions/' 
routerLink = 'products/123/versions/2' 
[routerLink] = ['products/123/versions/'] 
[routerLink] = ['products/123/versions/2'] 
+0

、私はProductComponentとしての代わりに、同じ階層レベルにあるルータのconfigエントリを追加する必要がありますProductComponentの子であるProductVersionsの子など。 – Arwin

+0

権利。子を作成するのではなく、ProductComponentのルート定義で 'ROUTE /:id'を直接指定し、activatedRoute.paramsへのサブスクリプションを使用して取得することができます – Gary

+0

もう一度ありがとうございます。私はここでその方法で複数のパラメータに必要な答えを見つけたと思います:http://stackoverflow.com/questions/37903073/angular-2-angular-router-3-0-0-alpha-7-accessing-multiple -パラメーター – Arwin

1

<a [routerLink]="['/products/123/versions']" [queryParams]="{id:id}"></a> 

そして、あなたはこの

{ path: 'products/123/versions', component: productsComponent } 
関連する問題