如何将angular 5服务响应映射到JSON对象

如何将angular 5服务响应映射到JSON对象,json,angular,service,mapping,Json,Angular,Service,Mapping,在早期的angular版本中,在我们的服务中,我们可以简单地将响应映射到JSON对象,如下所示: import { Injectable } from '@angular/core'; import 'rxjs/add/operator/map'; import { HttpClient } from '@angular/common/http'; @Injectable() export class MakeService { constructor(private http:Http

在早期的angular版本中,在我们的服务中,我们可以简单地将响应映射到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());
  }
}
然而,在angular5中,我们不再使用HTTP,而是必须使用HttpClient,上面的代码中应该添加什么才能在angular5中工作

我的组件看起来像:

  makes : any[]; 
  constructor(private makeservice: MakeService) { }

  ngOnInit() {
    this.makeservice.getMakes().subscribe(makes=>{
    this.makes=makes;
    console.log("MAKES",this.makes);
    });
  }

只需从中删除“:any[]”数据类型,它就可以工作,但我需要将JSON对象从服务传递给组件

您不再需要映射到JSON,因此这就足够了:

getMakes(){
  return this.http.get('/api/myAPI');
}
但是,这返回一个可观察的,而不是承诺,因此您必须订阅返回值才能得到结果。如果您想继续履行承诺,您可以这样做:

getMakes(){
  return this.http.get('/api/myAPI').toPromise();
}

您不再需要映射到JSON,因此这就足够了:

getMakes(){
  return this.http.get('/api/myAPI');
}
但是,这返回一个可观察的,而不是承诺,因此您必须订阅返回值才能得到结果。如果您想继续履行承诺,您可以这样做:

getMakes(){
  return this.http.get('/api/myAPI').toPromise();
}
试试下面的方法

getMakes(){
    return this.http.get('/api/myAPI')  
}
在成分上,

constructor(public data:DMakeService ){
    this.data.getMakes().subscribe(data=>{
      console.log(data);
    })
  }
试试下面的方法

getMakes(){
    return this.http.get('/api/myAPI')  
}
在成分上,

constructor(public data:DMakeService ){
    this.data.getMakes().subscribe(data=>{
      console.log(data);
    })
  }
根据。您应该始终订阅
httpclient

始终订阅

HttpClient方法在您调用之前不会开始其HTTP请求 订阅()方法返回的可观察对象。这是真的 对于所有HttpClient方法

const req=http.get('/api/heroes');
//已发出0个请求-未调用.subscribe()。
req.subscribe();
//1提出请求。
req.subscribe();
//2提出的请求。
根据。您应该始终订阅
httpclient

始终订阅

HttpClient方法在您调用之前不会开始其HTTP请求 订阅()方法返回的可观察对象。这是真的 对于所有HttpClient方法

const req=http.get('/api/heroes');
//已发出0个请求-未调用.subscribe()。
req.subscribe();
//1提出请求。
req.subscribe();
//2提出的请求。