[英]How to map the angular 5 service response to JSON object
在較早的角度版本中,在我們的服務中,我們可以簡單地將響應映射到JSON對象,如下所示:
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class MakeService {
constructor(private http:HttpClient) { }
getMakes(){
return this.http.get('/api/myAPI')
.map(res=>res.json());
}
}
但是,在angular 5中,我們不再有HTTP,而必須使用HttpClient,應該在上面的代碼中添加什么才能在angular5中工作。
我的組件看起來像:
makes : any[];
constructor(private makeservice: MakeService) { }
ngOnInit() {
this.makeservice.getMakes().subscribe(makes=>{
this.makes=makes;
console.log("MAKES",this.makes);
});
}
只需從make中刪除“:any []”數據類型即可,但是我需要將JSON對象從服務傳遞給組件。
嘗試以下方法
getMakes(){
return this.http.get('/api/myAPI')
}
在組件中
constructor(public data:DMakeService ){
this.data.getMakes().subscribe(data=>{
console.log(data);
})
}
您不再需要映射到JSON,因此這就足夠了:
getMakes(){
return this.http.get('/api/myAPI');
}
這將返回一個Observable,但是不會返回Promise,因此您必須訂閱返回值才能獲得結果。 如果您想繼續兌現承諾,可以執行以下操作:
getMakes(){
return this.http.get('/api/myAPI').toPromise();
}
根據這里 。 您應該始終訂閱httpclient
發出的任何請求
永遠訂閱!
直到您對由該方法返回的observable調用subscribe()為止,HttpClient方法才會開始其HTTP請求。 所有HttpClient方法均是如此。
const req = http.get<Heroes>('/api/heroes');
// 0 requests made - .subscribe() not called.
req.subscribe();
// 1 request made.
req.subscribe();
// 2 requests made.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.