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
我有一个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
.