繁体   English   中英

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

[英]Why to import { HttpClientModule } in app.module.ts

我一直致力于创建一个服务来发出 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')
  }
}

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

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

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

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

对于您在此行中使用的变量类型信息

constructor(private http:HttpClient)

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

在 Angular 文档中,它说 HttpClientModule,“为 HttpClient 配置依赖注入器,支持 XSRF 服务。” 所以看起来这就是为什么它是使用 HttpClient 的先决条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM