Ошибка ERROR: StaticInjectorError (AppModule) [UserformService → HttpClient]:

При попытке добавить таблицу PrimeNG я сломал свою сборку здесь: https://github.com/BillyCharter87/Tech-O-Dex-UI/tree/BrokeIt

Я вспоминаю обновление моего package.json с TypeScript 2.3.4 до 2.4.0, и оно сломалось из-за (я думаю) того факта, что я использовал Headers и Http для моего вызова 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!

Ответы

Ответ 1

Убедитесь, что вы импортировали 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 { }

Ответ 2

Импортируйте это в app.module.ts

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

и добавьте это в импорт

HttpClientModule

Ответ 3

В моем случае возникла необходимость:

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

вместо просто:

@Injectable()
export class FooService { ...

Ответ 4

Просто у меня есть импорт в appmodule.ts

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

Моя проблема решена

Ответ 5

предоставить все пользовательские сервисы, написанные вами в разделе декоратора компонентов. Пример: поставщики: [имя_сервера]

Примечание: если вы используете услугу для обмена данными между компонентами. объявлять провайдеров: [serviceName] на уровне модуля

Ответ 6

Есть две возможные причины: 1. Если вы используете HttpClient в своем сервисе, вам нужно импортировать HttpClientModule в файл модуля и упомянуть его в массиве import.

import { HttpClientModule } from '@angular/common/http';
  1. Если вы используете обычный Http в своих сервисах, вам нужно импортировать HttpModule в файл модуля и указать его в массиве import.

    import { HttpModule } from '@angular/http '

По умолчанию это не доступно в angular, тогда вам нужно установить @angular/http

Если вы хотите, вы можете использовать как HttpClientModule, так и HttpModule в своем проекте.

Ответ 7

Есть две причины этой ошибки

1) В массиве импорта, если вы дважды импортировали HttpModule

enter image description here

2) Если вы не импортировали:

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

Если вы хотите, то запустите:

npm install @angular/http

Ответ 8

Добавить

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

в app.module.ts файл. Это решило мою проблему.