错误错误:StaticInjectorError(AppModule)[UserformService - > HttpClient的]:

时间:2018-04-25 02:58:27

标签: angular angular4-httpclient

在尝试添加PrimeNG表时,我在此处破坏了我的构建:https://github.com/kentcdodds/babel-plugin-codegen/issues/10

我记得将我的package.json从TypeScript 2.3.4更新到2.4.0并且由于(我认为)我使用HeadersHttp这个事实而破了呼叫。我尝试将其设置回2.3.4无济于事。我已经通过添加来修复了我的能力:

import { HttpClient, HttpHeaders } from "@angular/common/http";

但仍然遇到我现在对HttpClient的错误。我尝试将HttpClient导入提供程序,如下所示:providers: [HttpClient]用于我的app.module.ts。

完整错误如下:

AppComponent.html:9 ERROR Error: StaticInjectorError(AppModule)[HttpClient -> HttpHandler]: 
StaticInjectorError(Platform: core)[HttpClient -> HttpHandler]: 
NullInjectorError: No provider for HttpHandler!

10 个答案:

答案 0 :(得分:25)

确保您已导入static,而不是将HttpClientModule直接添加到提供商列表中。

有关详细信息,请参阅https://angular.io/guide/http#setup

HttpClient实际上为您提供HttpClientModule。见https://angular.io/api/common/http/HttpClientModule

代码示例:

HttpClient

答案 1 :(得分:23)

将其导入app.module.ts

import {HttpClientModule} from '@angular/common/http';

并在导入中添加此内容

HttpClientModule

答案 2 :(得分:10)

添加

import { HttpClientModule } from '@angular/common/http';

app.module.ts文件。这解决了我的问题。

答案 3 :(得分:7)

仅我已导入appmodule.ts

import { HttpClientModule } from '@angular/common/http';
  imports: [
     BrowserModule,
     FormsModule,
     HttpClientModule  <<<this 
  ],

我的问题解决了

答案 4 :(得分:7)

就我而言,需要:

@Injectable({
    providedIn: 'root'  // <- ADD THIS
})
export class FooService { ...

而不只是:

@Injectable()
export class FooService { ...

答案 5 :(得分:2)

提供您在组件装饰器部分中编写的所有自定义服务方式 示例:提供者:[serviceName]

注意:如果您正在使用服务在组件之间交换数据。宣布 提供者:[serviceName] 在模块级别

答案 6 :(得分:2)

将HttpClientModule导入您的app.module.ts

import {HttpClientModule} from '@angular/common/http';

...
@NgModule({
...
  imports: [
    //other content,
    HttpClientModule
  ]
})

答案 7 :(得分:2)

在您的HttpClientModule中添加app.module.ts并尝试,这样可以正常工作。 例如

import { HttpModule } from '@angular/http

答案 8 :(得分:1)

此错误有两个原因

1)在导入数组中,如果您两次导入 HttpModule

enter image description here

2)如果尚未导入:

import { HttpModule, JsonpModule } from '@angular/http'; 

如果需要,请运行:

npm install @ angular / http

答案 9 :(得分:1)

有两个可能的原因 1.如果您在服务中使用HttpClient,则需要在模块文件中导入HttpClientModule并在imports数组中提及它。

import { HttpClientModule } from '@angular/common/http';
  1. 如果您在服务中使用普通的Http,则需要在模块文件中导入HttpModule并在imports数组中提及它。

    import { HttpModule } from '@angular/http'

默认情况下,它在angular中不可用,那么您需要安装@ angular / http

如果愿意,可以在项目中同时使用HttpClientModule和HttpModule。