当我尝试使用API响应的属性填充ionic-list时,我收到错误
原始例外:无法阅读属性' id'未定义的
来自服务器的响应是:
{" ID":6,"状态":10,"名称":"约翰""电子邮件&# 34;:" abc@xyz.com"}
以下是代码段:
provider.ts
return Observable.create(observer => {
this.http.get(requesturl).map(res => res.json()).subscribe(data => {
observer.next(data);
observer.complete();
console.log("AUTHGET output : " + JSON.stringify(data))
});
});
my profile.ts
this.myprovider.getRemoteData(url, "AUTHGET" , "" , this.profile)
.subscribe(items => {
this.profile = items
console.log("Full Data : " + JSON.stringify(this.profile))
});
myprofile.html:
<ion-content padding>
<ion-list>
<ion-item >
{{profile.id}}
</ion-item>
</ion-list>
</ion-content>
答案 0 :(得分:3)
您必须正确处理Observable
,如下所示。
provider.ts
getRemoteData(): Observable<any> {
return this.http.get(requesturl).map(res => res.json());
}
myProfile.ts
yourMethod(): void {
this.myprovider.getRemoteData(url).subscribe(
items=> {
this.profile = items;
},
err => { },
() => { }
);
}
myprofile.html
使用安全导航操作员 ?.
。
<ion-content padding>
<ion-list>
<ion-item >
{{profile?.id}}
</ion-item>
</ion-list>
</ion-content>
答案 1 :(得分:0)
从服务器获取答案需要时间,而离子2尝试评估{{profile.id}},而配置文件尚未定义。使用安全操作符{{profile?.id}}或* ngIf =“profile”。此外,您无需重新创建可观察对象,只需在您的provider.ts中使用.map。