2017-12-17 2 views
2

Ich habe eine eckige App, die lazy Modul lädt.Angular - Wie kann ich AUX-Route mit Lazy-Loaded-Modul aktivieren?

Zunächst wird die App zu home navigiert wird, wo es das Modul lädt (benannt module1):

Haupt-Routing:

const routes: Routes = [ 
    { path: "", redirectTo: "/home", pathMatch: "full" }, 
    { path: "home", loadChildren: "./module1/module1.module#Module1Module" }, 

]; 

Bei module1 - Routing-Tabelle gibt es auch:

const routes: Routes = [ 
    { 
     path: "", component: Home1Component, 
     children: [ 
      { path: 'bird', outlet: 'under', component: Home2Component } 
     ] 
    } 
]; 

Also, da es lädt, wenn die App startet - es geht zu /home wo es lädt es die Home1Component

Aber Home1Component auch eine Schaltfläche in ihm hat die einen Wert an die Auslass-Route setzen annehmen.

home1.component.html:

<input value="click to activate aux route" type="button" (click)="go()"/> 
<router-outlet ></router-outlet> 
<router-outlet name='under'></router-outlet> //<---- I want to activate only this 

Dies ist, wie ich versuche, den Ausgang Weg zu aktivieren:

public go() { 
    this.router.navigate([{ outlets: { under: ['bird'] } }], { relativeTo: this.route }) 
    } 

Aber ich einen Fehler:

Error: Cannot match any routes. URL Segment: 'home'

Frage:

Warum erhalte ich diesen Fehler und wie kann ich ihn beheben?

Online code here : Stackblitz

+0

Ich glaube, dies ist ein Bug mit Winkeln verzögertes Laden aux Route. Ich hatte ein ähnliches Problem. Dies könnte helfen https://stackoverflow.com/questions/45394728/angular-2-lazily-loaded-routes-that-contain-aux-router-outlet/45400430#45400430 – jmw5598

+0

@ jmw5598 Ich sehe Ihre Antwort, aber können Sie bitte anwenden das zu meinem Code? Weil ich nicht sehe, wie es funktioniert –

+0

kann ich. Ich werde es anwenden, sobald ich in einen Computer einsteigen kann. Könnten ein paar Stunden sein. – jmw5598

Antwort

Verwandte Themen