Angular2 - 从HTTP GET读取数据时出现问题

时间:2017-04-24 23:10:45

标签: angular web-applications

我正在开发一个Angular2应用程序。我有一个名为submit.service.ts的服务文件,它定义了我的GET请求:

GET(URL: string): Promise<any> {
  return this.http.get(URL)
    .toPromise()
    .then(this.extractData)
    .catch(this.handleError);
}

private extractData(res: Response) {
  let body = res.json();
  return body.data || { };
}

然后,在我的主要组件类中,我有调用GET请求的方法:

constructor(private sService:submitService, private EngageVar:EngageVariables) { }

ngOnInit() { 
}

//EngageVar is a class of variables I created to store all my variables
returnDetails() {

            this.EngageVar.listOfIDs = this.sService.GET('myURL' + this.EngageVar.IDSearch);               
            this.EngageVar.hideTable = false;
            var keys = Object.keys(this.EngageVar.listOfIDs);
            var len = keys.length;
            this.EngageVar.lengthOfRecords = len;

        }

当我拨打电话时,我可以在网络调试器中看到我得到的回复如下:

[{id:1,name:John},{id:2,name:Jane}]

但是,在我的应用程序中,当我尝试使用GET调用中的数据时,它只有[Object object]["__zone_symbol__state", "__zone_symbol__value"]。我做错了什么?

1 个答案:

答案 0 :(得分:1)

AngularJS(V1)和Angular(V2 +)在Http方面是不同的 我可以看到您在response.data

更改对JSON的响应后尝试获取res.json();

第二,您正在将您的HTTP调用从Observable转换为Promise,这在本例中并不是一个好主意(请阅读有关RxJS的信息)

以下示例将起作用

服务:

GET(URL: string): Promise<any> {
  return this.http.get(URL)
    .map( (res: Response) => rs.json() );
}

控制器:

returnDetails() {
    this.sService.GET('myURL' + this.EngageVar.IDSearch)
        .subscribe( data => {
            let keys = Object.keys(data);
            this.EngageVar.hideTable = false;
            this.EngageVar.listOfIDs = data;
            this.EngageVar.lengthOfRecords: keys.length;
        });
}