2016-09-07 8 views
8

Zum Beispiel, wenn ich folgende Route Organisation haben:Angular 2 verschachtelte Routen resolve Ausführung

const appRoutes: Routes = [ 
    { 
     path: "", 
     component: AppComponent, 
     resolve: { 
      app: AppResolver 
     }, 
     children: [ 
      { 
       path: "", 
       component: NestedComponent, 
       resolve: { 
        subscribers: NestedResolver 
       } 
      } 
     ] 
    } 
]; 

und folgende Resolvern:

export class AppResolver implements Resolve<any> { 
    constructor(private appService: AppService) {} 
    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { 
     return this.appService.getAppData(); 
    } 
} 
export class NestedResolver implements Resolve<any> { 
    constructor(private nestedService: NestedService) {} 
    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { 
     console.log(route.parent.data); //when this is executed route.parent.data is empty :(
     return this.nestedService.getNestedData(); 
    } 
} 

Nach ca. bootstraping NestedResolver und AppResolver führt zuerst aus und macht t Erben Anfragen parallel.

Können wir den Code ändern und implementieren, dass NestedResolver auf die Auflösung von AppResolver wartet und Zugriff auf gelöste AppResolver-Daten hat?

Angular 2 RC6, Angular Router 3.0.0-rc.2

+1

Konnten Sie Antwort darauf finden? –

Antwort

3

Ich weiß, diese Frage ist ziemlich alt, aber nur für den Fall jemand stolpert es (wie ich).

Dies war ein bekannter Fehler und wurde seither behoben. Aktualisieren Sie einfach Ihre Router-Version auf etwas höher oder gleich 2.1.0 und Sie sollten gut gehen. Als Referenz hier ist der relevante issue on github und der associated fix