Angular 4:注入HttpClient有什么好处

时间:2017-10-19 18:58:44

标签: angular

关注Angular docs后,HttpClient会被注入app组件。我在另一个指南上看到这是一个有利的"没有解释。

@Component(...)
export class MyComponent implements OnInit {

  results: string[];

  // Inject HttpClient into your component or service.
  constructor(private http: HttpClient) {}

  ngOnInit(): void {
    // Make the HTTP request:
    this.http.get('/api/items').subscribe(data => {
      // Read the result field from the JSON response.
      this.results = data['results'];
    });
  }
}

关于这一点,我有一些问题:

1) Where/How is the HttpClient actually instantiated?  Does `ng serve` handle this?
2) How could I inject a different instance if I needed to?

3 个答案:

答案 0 :(得分:3)

ng 4.3+中引入的HttpClient / HttpClientModule是Http / HttpModule的重新实现。要提及一个示例功能,您现在可以将返回的结果转换为控制结果/错误的用户定义接口,而不是将您的GET结果映射到JSON然后挖掘可能存在或不存在的属性。例如,在更新cli和npm之后,创建一个类似于图像中的项目并在浏览器中查看标题!在您的界面中,您可以选择要回映的内容。

enter image description here

答案 1 :(得分:2)

如果要使用服务(基本上是TS类),则需要先实例化它。这就是角度注射器自动为您做的事情。

这种方法是有利的"因为它会自动查找其构造函数中定义的服务依赖项。

不确定第二个问题 - 如果要注入同一类(服务)的另一个实例,则必须手动执行。

有关角度依赖注入的更多信息可以在他们的文档中找到:

https://angular.io/guide/dependency-injection

答案 2 :(得分:1)

实际上,HttpClient是Http的改进替代品。他们希望在Angular 5中弃用Http并在以后的版本中将其删除。

或者你是否想知道为什么注射它是有利的"?你注入服务。这就是Angular中服务的工作方式。

与Http服务一样,当加载导入Http的模块时,实例化HttpClient服务。

预计只有一个此服务的实例。我不确定为什么你会想要不止一个?