Angular4个http服务调用没有return数据

Angular 4 http service call does not return data

我有一个network.service.ts,代码如下-

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';

import { Peer } from '../model/Peer';

import 'rxjs/add/operator/toPromise';

@Injectable()
export class NetworkService {
    private apiURL = 'http://127.0.0.1:8080/organization/';

    constructor(private http: Http) { }

    public getOrganizationPeers(organizationName): Promise<Peer[]> {
        return this.http.get(this.apiURL + organizationName + '/peers')
            .toPromise()
            .then((response) => response.json().data as Peer[])
            .catch(this.handleError);
    }

    private handleError(error: any): Promise<any> {
        console.error('An error occurred', error);
        return Promise.reject(error.message || error);
    }
}

我的peer-list.component.ts是组件文件

import { Component, OnInit } from '@angular/core';

import { NetworkService } from './network.service';

import { Peer } from '../model/Peer';

@Component({
  selector: 'another',
  templateUrl: './peer-list.template.html'
})

export class PeerListComponent implements OnInit {

  private peers: Peer[];
  constructor(private networkService: NetworkService) { }

  ngOnInit(): void {
      console.log('test');
      this.networkService.getOrganizationPeers('peerOrg1').then(peers 
=> this.peers = peers);
  }
}

调用 ngOnInit 方法时,this.peers 始终设置为未定义。数据正在从服务器返回,但回调无法将数据设置为 this.peers 变量。有人可以帮我吗?

谢谢。

.then((response) => response.json().data as Peer[])

应该是

.then((response) => response.json() as Peer[])

调用 json() 将直接 return payload/data。您可能想要执行 .data 的唯一原因是如果您的 json 结果中有一个名为 data.

的实际 property/field