关注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?
答案 0 :(得分:3)
ng 4.3+中引入的HttpClient / HttpClientModule是Http / HttpModule的重新实现。要提及一个示例功能,您现在可以将返回的结果转换为控制结果/错误的用户定义接口,而不是将您的GET结果映射到JSON然后挖掘可能存在或不存在的属性。例如,在更新cli和npm之后,创建一个类似于图像中的项目并在浏览器中查看标题!在您的界面中,您可以选择要回映的内容。
答案 1 :(得分:2)
如果要使用服务(基本上是TS类),则需要先实例化它。这就是角度注射器自动为您做的事情。
这种方法是有利的"因为它会自动查找其构造函数中定义的服务依赖项。
不确定第二个问题 - 如果要注入同一类(服务)的另一个实例,则必须手动执行。
有关角度依赖注入的更多信息可以在他们的文档中找到:
答案 2 :(得分:1)
实际上,HttpClient是Http的改进替代品。他们希望在Angular 5中弃用Http并在以后的版本中将其删除。
或者你是否想知道为什么注射它是有利的"?你注入服务。这就是Angular中服务的工作方式。
与Http服务一样,当加载导入Http的模块时,实例化HttpClient服务。
预计只有一个此服务的实例。我不确定为什么你会想要不止一个?