2016-05-09 32 views
0

私はページの左側にメニューがあり、選択されたメニューのサブメニューである別のメニューが左側になければなりません。これがうまくいくために、私は非終端のルート '/ section/...'を作成し、それに別のルータのコンセントを持つコンポーネントを作成しました。 「セクション」フォルダ内のコンポーネントもルータコンポーネントです。私はそれを動作させるために、このようなリンクを使用していた(「./」リンクは、このサブコンポーネントに固有であるためには、ここで追加する必要がありました):angular2のサブメニュー

<a [routerLink]=" ['./Index'] ">Index</a> 
<a [routerLink]=" ['./Test'] ">Test</a> 

すべてが完璧に動作しますが、私はターンしたいと思います現在私のサブメニューであるこれらの要素は、別の別の要素になります。私はすべてのセクションで私のメニューをハードコードしたくない、むしろちょうどタグを配置し、何らかの形でそのサブメニューに追加されるリンクを指定するだろう。 ここでの問題は私が立ち往生していて、それらのリンクをサブメニューコンポーネントに渡して、正しい位置を指し示すことができるかどうかわからないことです。 そのようなサブメニューコンポーネントを作成してそのリンクのリストを渡す最善の方法は何でしょうか?

+0

どのようなAngular2バージョンをお使いですか?サブメニューをルーティングするコンポーネントを作ることは本当に必要ですか?ツリー構造を作成し、リンクをクリックしたときに表示されるコンポーネントをルーティングするだけではいかがですか?たぶん私はあなたの質問を誤解しました。 –

+0

私はバージョンではわかりませんが、どこで(webpackを使用して)検索するかわかりません。おそらく、サブメニューに根ざしたコンポーネントは必要ありませんが、それは私がそれをやっていることを知っている唯一の方法です。また、いくつかのサブメニューはサイドバーのような追加機能で強化されているので、サイドバーのdivをフィーチャーグループに入れたいと思っていました。どのようにそれを行うことをお勧めしますか? – marius

+0

この目的のためにルータを使用するのは、親からサブメニューへのナビゲーションをURLに反映させたいときだけです。これは妥当で、これがあなたのユースケースにとって重要であるかどうかは分かりません。それ以外の場合は、たとえば、http://stackoverflow.com/questions/36325212/angular-2-dynamic-tabs-with-user-click-chosen-components/36325468#36325468に示すように、サブメニューをコンポーネントとして追加できます。ターミナルメニュー項目へのナビゲーションだけが、ブラウザのURLバーに反映されます。 –

答えて

0

Iは、メニューパスと

http://myapp/main_menu.sub_menu3.sub_sub_menu5/some_content/details 

witha経路の設定のようなルートパスと実際のコンテンツのパスの他の部分のための経路の単一のパラメータを使用して同様のユースケースを解決し

{path: '/:menu/...', name: 'MainArea', component: MainAreaComponent} 

Iは、ナビゲーションバーコンポーネントにルータを注入し、変化に耳を傾け、渡されたメニューパラメータに応じてナビゲーションバービューを更新し、メニューのナビゲーション変化を反映する更新されたメニューパラメータ値とパスでthis.router.navigate(...)を呼び出します選択したメニューに応じてメインコンテンツを表示する必要があります。