I would like to fetch an async data from a server before starting to render a component. I've attempted to use a route resolver, but I cant see how it can help.
I can access the resolver data in the component via ActivatedRoute using:
ngOnInit() {
this.route.data.subscribe((data : Data) => {
this.caseDataManager.setCase(data['casedata']);
});
The component get initialize and rendered before the async code within the "subscribe" get completed.
What is the right way to do it?
UPDATE: my resolver code:
import { Injectable } from '@angular/core'
import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'
import { Observable } from 'rxjs/Observable'
import { Server } from '../shared/server.service'
@Injectable()
export class WorkspaceResolver implements Resolve<any> {
constructor(private server : Server) {}
resolve(route : ActivatedRouteSnapshot, state : RouterStateSnapshot) : Observable<any> {
return this.server.loadCase(route.params['caseid']); #loadCase is basically "return this.http.get(API_URL+'/case/'+caseid).map(resp => resp.json()"
}
}