Angular Http得到可观察
问题描述:
我知道有很多这方面的问题,但我尝试了很多技巧,问题仍然存在。Angular Http得到可观察
我实现了返回可观察到的一个GET:
public getEstatisticasPara(motorista:Motorista): Observable<EstatisticaAvaliacao> {
let params = new URLSearchParams();
params.set(Config.ESTATISTICA_AVALIACAO_REQUEST_PARAM, motorista.getId().toString());
let options = new RequestOptions({ headers: this.headers, params: params });
return this.http.get(this.path, options)
.map((res) => res.json)
.catch(this.handleError);
}
当我尝试订阅总是得到一个未定义:
atualizaMediaAvalicaoes(){
let motorista:Motorista = FlyweightFactory.getInstanceOf("motorista");
motorista.setId(1);
this.estatisticaAvaliacaoProvider.getEstatisticasPara(motorista)
.subscribe((res)=>{
console.log(JSON.stringify(res));
let estatisticaAvaliacao:EstatisticaAvaliacao = EstatisticaAvaliacao.fromJson(res);
this.storage.set("mediaAvaliacao", estatisticaAvaliacao.getMedia());
},(err)=>{
console.log(err);
});
}
网络控制台显示正确答案......所以为什么不确定? =/
答
这
.map((res) => res.json)
应该是这样的:
.map((res) => res.json())
通知附加括号。
你使用旧的'Http'服务还是新的'HttpClient'?你的'res'对象是怎么样的?因为'res.json'似乎很奇怪。 – cyrix
Http:从'@ angular/http'导入{Http}; - 我认为是老..其余的回应是:{“total”:8,“totalCincoEstrelas”:2,“totalQuatroEstrelas”:3,“totalTresEstrelas”:2,“totalDuasEstrelas”:1,“totalUmaEstrela”:0, “media”:3.75} –
这个'.map((res)=> res.json)不应该是这样的:'.map((res)=> res.json())'。注意额外的括号。 – DeborahK