typescript - Angular 2 inbäddade rutter lösningens exekvering
Till exempel, om jag har följande ruttorganisation:
const appRoutes: Routes = [
{
path: "",
component: AppComponent,
resolve: {
app: AppResolver
},
children: [
{
path: "",
component: NestedComponent,
resolve: {
subscribers: NestedResolver
}
}
]
}
];
och följande resolvers:
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();
}
}
Efter att appen har startats kommer NestedResolver och AppResolver att köras först och göra sina förfrågningar parallellt.
Kan vi ändra koden och implementera att NestedResolver väntar på att AppResolver ska lösa och har tillgång till AppResolver lösta data?
Angular 2 RC6, Angular-router 3.0.0-rc.2
Svar #1
Jag vet att den här frågan är ganska gammal, men bara ifall någon råkar stöta på den (som jag).
Detta var en känd bugg och den har sedan dess blivit åtgärdad. Uppdatera bara din routernversion till något högre eller lika med 2.1.0 och du borde vara redo att köra. Som referens här är det relevanta problemet på GitHub och den tillhörande lösningen.