2017-07-31 171 views
0

我知道有很多這方面的問題,但我嘗試了很多技巧,問題仍然存在。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

回答

0

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

應該是這樣的:

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

通知附加括號。