Ionic 2:无法从REST获取属性获取响应

时间:2017-03-20 00:13:26

标签: angular typescript ionic-framework ionic2

当我尝试使用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>

2 个答案:

答案 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。