2016-05-09 14 views
1

Ich arbeite an einem Angular2 Anwendung, derzeit sind wir auf Beta-17, da der Release-Kandidat nicht mehr Bündelung unterstützt und brach alles (das ist eine andere Geschichte) .Angular2 Routing, Eltern Kind - Route Komponente vs Ansicht Komponente

Ich verstehe, dass die Beziehung zwischen Eltern und Kind Routen erwartet werden, dass das Kind eine "Routing-Komponente" sein muss, wenn es Routen haben möchte. Das macht Sinn, richtig - aber was ist, wenn ich eine Eltern- "Routing-Komponente" haben möchte, die eine untergeordnete "View-Komponente" hat, die als Elternteil für eine untergeordnete "Routing-Komponente" fungiert?

. 
├── app.component // Has two child routes, both are "view components" 
    ├── plan.component 
    └── design.component // View component, route "/design/:id/..." 
     ├── header.component 
     ├── nav-and-body.component // Routing component 
     └── footer.component 

Ich habe eine Top-Level-Anwendung, die zwei Routen hat, die /plan/:id/... und /design/:id/... Routen. Wie Sie sehen können, habe ich den Wunsch, dass diese als Eltern für andere "Routing-Komponenten" dienen. Stellen Sie sich vor, wir befinden uns in der "Design" -Route und wir versuchen, zu einer untergeordneten Route zu navigieren, die in NavAndBodyComponent definiert ist. Es funktioniert nicht, noch wird ein Fehler ausgelöst.

Ich glaube, das liegt an der Tatsache, dass ich eine Eltern "Routing-Komponente", die eine untergeordnete "View-Komponente" hat, die eine verschachtelte "Routing-Komponente" hat - wie kann ich das beheben, ohne diese Hierarchie zu ändern?

Die Ansicht Komponenten Belastung wie erwartet:

URL: localhost:5000/design/10

Aber wenn ich versuche, die Navigation zu dem verschachtelten Kind, um die URL ändert Route

URL: localhost:5000/model

ich will (und erwartet):

URL: localhost:5000/design/10/model

aktualisieren

Hier ist eine sehr detaillierte Plunker!

+1

Können Sie eine Plunker erstellen. Ich finde es ziemlich schwer zu verstehen, was du zu erreichen versuchst. Wenn ich die Frage verstehe, dann nehme ich an, eine Zwischenkomponente mit nur einer Route mit dem Pfad '/ ...' und 'useAsDefault: true' und einem' 'sollte tun, was Sie wollen. –

+0

@ GünterZöchbauer Ich kann nicht scheinen, einen Plünderer überhaupt mit beta.17 und Routing arbeiten zu lassen. Irgendwelche guten Startpunkte für angular2 beta.17 plunker? –

+0

Verbinde einfach den Link zu dem Plunker, den du hast. Ich werde es mir ansehen und versuchen, es zum Laufen zu bringen. –

Antwort

1

Das Problem wird durch Hinzufügen von ROUTER_PROVIDERS auf eine andere Komponente als die Root-Komponente verursacht.

Plunker example

Wie dynamisch hinzugefügt Routen jedes Mal eine Route aktiviert verhindern Zugabe wird sehen Angular2: Configuration 'name' conflicts with existing route 'name'

+0

Nun wird der 'useAsDefault' nicht berücksichtigt, ich muss manuell" Model "auswählen - wie kann ich das auch beheben? –

+0

Eigentlich weiß ich nicht. Ich habe selbst nicht so viel gebraucht. Es ist auch anders in dem neuen Router, deshalb möchte ich nicht mehr viel Zeit mit der Untersuchung im alten Router verbringen. (Der neue Router hat noch nicht 'usesDefault'). Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, 'useAsDefault' mit dynamisch konfigurierten Routen arbeiten zu lassen. Vielleicht können Sie die Standardroute statisch hinzufügen? –

Verwandte Themen