ERROR Error: StaticInjectorError(AppModule)[UserformService -> HttpClient]:

ERROR Error: StaticInjectorError(AppModule)[UserformService -> HttpClient]:

在尝试添加 PrimeNG 时 table 我在此处破坏了构建:https://github.com/BillyCharter87/Tech-O-Dex-UI/tree/BrokeIt

我记得我将我的 package.json 从 TypeScript 2.3.4 更新到 2.4.0,但由于(我认为)我使用 HeadersHttp我的 POST 电话。我尝试将其设置回 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!

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

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

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

代码示例:

import { HttpClientModule, /* other http imports */ } from "@angular/common/http";

@NgModule({
    // ...other declarations, providers, entryComponents, etc.
    imports: [
        HttpClientModule,
        // ...some other imports
    ],
})
export class AppModule { }

将其导入 app.module.ts

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

并在导入中添加这个

HttpClientModule

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

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

只是我在 appmodule.ts

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

我的问题已解决

就我而言,需要:

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

而不仅仅是:

@Injectable()
export class FooService { ...

这个错误有两个原因

1) 如果你导入了两次HttpModule,在import数组中

2) 如果你还没有导入:

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

如果你想要那么运行:

npm 安装@angular/http

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

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

    import { HttpModule } from '@angular/http'

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

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

在您的 app.module.ts

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

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

在您的 app.module.ts 中添加 HttpClientModule 并尝试,它肯定会起作用。 例如

import { HttpModule } from '@angular/http