簡體   English   中英

如何將angular 5服務響應映射到JSON對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM