2017-09-26 27 views
1

目前我從http(@ angular/http)切換到HttpClient(@ angular/common/http),並且遇到了將響應映射到對象的問題。angular:HttpClient地圖響應

舊代碼(之前的工作)

this.http.get(environment.baseUrl + '/api/timeslots') 
      .map((response: Response) => { 
        const data = response.json(); 
        const timeslots = Array.of<Timeslot>(); 
        for (const item of data) {...} 

新的代碼,但是編譯錯誤:

this.httpClient.get(environment.baseUrl + '/api/timeslots') 
       .map((response: Response) => { 
         const data = <Timeslot[]> response; 
const timeslots = Array.of<Timeslot>(); 
        for (const item of data) {...} 

難道我錯過投?響應是一組時間片。

+0

是 - 但是這給出了一個編譯錯誤 – netshark1000

+0

@ netshark1000不只是說你有「問題」或「錯誤」。發佈完整且準確的錯誤。 –

+0

@yurzui你的編輯解決了它。請寫一個答案,以便我可以接受它 – netshark1000

回答

2

返回新HttpClient的默認值是Object。它在內部自動調用response.json()

你可以告訴HttpClient的反應會是什麼類型,所以:

this.httpClient.get<Timeslot[]>(...) 
.map((timeSlots) => { 
    ... 

其中timeSlots的類型將是Timeslot[]

看到有關新的HttpClient typecheking更多信息

2

你仍然可以,但你需要從rxjs導入map() - 運算符是這樣的:

import 'rxjs/add/operator/map'; 

而且你將有map()操作。

(這裏參見我的答案:https://stackoverflow.com/a/48323851/348841