Angular Http得到可观察

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); 
            }); 
} 

网络控制台显示正确答案......所以为什么不确定? =/

+0

你使用旧的'Http'服务还是新的'HttpClient'?你的'res'对象是怎么样的?因为'res.json'似乎很奇怪。 – cyrix

+0

Http:从'@ angular/http'导入{Http}; - 我认为是老..其余的回应是:{“total”:8,“totalCincoEstrelas”:2,“totalQuatroEstrelas”:3,“totalTresEstrelas”:2,“totalDuasEstrelas”:1,“totalUmaEstrela”:0, “media”:3.75} –

+3

这个'.map((res)=> res.json)不应该是这样的:'.map((res)=> res.json())'。注意额外的括号。 – DeborahK

.map((res) => res.json) 

应该是这样的:

.map((res) => res.json()) 

通知附加括号。