路由守卫可以返回对象,对象在组件初始化中可以获取并可以绑定对象值在页面上,但打印对象属性值确是undefined

来源:3-8 resolve守卫

慕粉1627455901

2017-11-30


路由守卫:

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):DiseaseBaseInfo | Observable<DiseaseBaseInfo> | Promise<DiseaseBaseInfo> {
   const diseaseid=route.queryParams['id'];
   // const diseaseid = route.params['id'];
 const geturl = this.diseasewebapiroot + '/GetDiseaseBaseInfoById?diseaseid='+diseaseid;
 this.disease = this.http.get(geturl).map(response => response.json());
 let diseasebaseinfo=new DiseaseBaseInfo();
 this.disease.subscribe(data => {
   diseasebaseinfo.Id=data.Data['Id'];
   diseasebaseinfo.StandardName=data.Data['StandardName'];
   diseasebaseinfo.Name=data.Data['Name'];
   diseasebaseinfo.Sex=data.Data['Sex'];

 });
 return diseasebaseinfo;
}

组件:

ngOnInit() {
 // 从路由守卫Resolve返回的数据中才初始化
 this.routedatainfo.data.subscribe((data: { diseaseeditinfo: DiseaseBaseInfo }) => {
   this.diseasedata = data.diseaseeditinfo;

 });
}

组件页面:

<input id="standardname" type="text" class="form-control" [formControl]="myevent" [(ngModel)]="diseasestandardname" value="{{diseasedata.StandardName}}">

可以正常绑定对象的属性值,但在组件的方法 初始方法中要获取到:this.diseasedata.StandardName确报

undefined错误,请问这是怎么回事?



写回答

1回答

JoJo

2017-12-04

因为获取信息是异步执行的,你去获取数据时Http请求还没返回。

0
0

Angular4.0从入门到实战 打造股票管理网站

Angular新特性,教你熟练使用 Angular 和 Typescript 开发组件式单页应用

2683 学习 · 1361 问题

查看课程