2016-05-09 4 views
0

Ich habe ein Menü auf der linken Seite der Seite und es muss ein anderes Menü auf der linken Seite sein, das ein Untermenü des ausgewählten Menüs ist. Damit dies funktioniert, habe ich eine nicht-terminale Route '/ section/...' erstellt und eine Komponente mit einem anderen Router-Outlet erstellt. Die Komponente im Ordner "section" ist ebenfalls eine Router-Komponente. Ich hatte wie diese Verbindungen zu verwenden, damit es funktioniert (die „./“ hatte hier hinzugefügt werden für die Links zu dieser Subkomponente spezifisch zu sein):Untermenü mit angular2

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

Alles funktioniert perfekt, aber ich möchte drehen diese hrefs, die derzeit mein Untermenü in einer anderen separaten Komponente sind. Ich möchte mein Menü nicht in jedem Abschnitt fest codieren, sondern platziere einfach ein Tag und gebe irgendwie die Links an, die zu diesem Untermenü hinzugefügt werden sollen. Das Problem hier ist, ich bin fest und weiß nicht, wie ich diese Links in die Untermenü-Komponente weitergeben könnte, so dass sie immer noch auf die richtigen Standorte verweisen würde. Also, was wäre der beste Weg, um eine solche Untermenü-Komponente zu erstellen und eine Liste von Links zu geben?

+0

Welche Angular2-Version verwenden Sie? Ist es wirklich notwendig, Untermenüs geroutete Komponenten zu machen? Warum nicht einfach eine Baumstruktur erstellen und nur die Komponente routen, die angezeigt wird, wenn auf eine Verknüpfung geklickt wird? Vielleicht habe ich deine Frage falsch interpretiert. –

+0

Ich bin mir nicht sicher, auf der Version, nicht einmal sicher, wo Sie suchen (mit Webpack). Es gibt wahrscheinlich keine Notwendigkeit für submenuverwurzelte Komponenten, es ist nur die einzige Art und Weise, wie ich es gemacht habe. Außerdem werden einige Untermenüs mit zusätzlichen Funktionen (mehr wie Seitenleisten) erweitert, also wollte ich, dass die Seitenleiste div in der Feature-Gruppe ist. Wie würdest du es empfehlen? – marius

+0

Ich würde den Router für diesen Zweck nur verwenden, wenn ich möchte, dass die Navigation von Eltern zu Untermenü in der URL widergespiegelt wird. Das ist vernünftig, ich kann einfach nicht sagen, ob das für Ihren Anwendungsfall wichtig ist. Andernfalls können Sie beispielsweise Untermenüs als Komponenten hinzufügen, wie in http://stackoverflow.com/questions/36325212/angular-2-dynamic-tabs-mit-user-click-chosen-components/36325468#36325468 dargestellt. Nur die Navigation zu einem Terminal-Menüelement würde dann in der URL-Leiste des Browsers wiedergegeben werden. –

Antwort

0

Ich löste einen ähnlichen Anwendungsfall durch einen einzelnen Parameter der Route für den Menüpfad und den anderen Teil des Weges für den eigentlichen Inhalt mit einer Route Pfad wie

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

Witha Route Config wie

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

spritze ich den Router an die navbar Komponente und auf Veränderungen hören und die navbar-Ansicht aktualisieren, auf dem übergebenen Parameter Menü abhängig und rufe this.router.navigate(...) mit einem aktualisierten Wert Menü Parameter reflektieren die Navigations Änderung im Menü und der Pfad erforderlich, um den Hauptinhalt abhängig vom ausgewählten Menü anzuzeigen.