我想在开始渲染组件之前从服务器获取异步数据。我试图使用路由解析器,但我看不出它有什么帮助。
我可以使用以下方法通过 ActivatedRoute 访问组件中的解析器数据:
ngOnInit() {
this.route.data.subscribe((data : Data) => {
this.caseDataManager.setCase(data['casedata']);
});
在“订阅”中的异步代码完成之前,组件会被初始化和渲染。
正确的方法是什么?
更新:我的解析器代码:
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()"
}
}