为什么要在app.module.ts中导入{HttpClientModule}

时间:2018-12-23 04:30:27

标签: javascript angular angular6

我一直在努力创建服务以发出http请求,因此我正在使用Angular提供的HttpClientModule。我有data.serivce.ts文件,在其中声明了服务,并且正在导入HttpClient,如下所示。

import { Injectable } from '@angular/core';
import { HttpClient} from '@angular/common/http'

@Injectable()
export class DataService {

  constructor(private http:HttpClient) { 

  }

  validateLogin(){
    return this.http.get('https://someurl')
  }
}

由于我将DataService的依赖项注入到app.module.ts的providers数组中,所以我不明白为什么我需要再次在app.module.ts中导入HttpClientModule

3 个答案:

答案 0 :(得分:0)

有关您在此行上使用的变量类型信息

constructor(private http:HttpClient)

如果没有该导入,则会出现错误,因为该类型是未知的。

答案 1 :(得分:0)

在Angular文档中,它说HttpClientModule,“为HttpClient配置依赖项注入程序,并为XSRF提供支持服务。”因此,这就是为什么这是使用HttpClient的前提条件。

答案 2 :(得分:0)

您应该研究角度模块的工作方式。您的app.module.ts包含AppModule,它是一个根模块。每个应用程序都有至少一个模块,即根模块。如果您在AppModule中导入任何模块,则应用程序的每个组件都可以访问其(导入的模块)组件。

这就是为什么要使HttpClient在应用程序中“随处可见”的原因:

将HttpClientModule导入AppModule中。 现在,您可以在自己的服务或组件中使用HttpClientModule内部定义的服务,组件等。