ОШИБКА Ошибка: StaticInjectorError (AppModule) [UserformService -> HttpClient]: - PullRequest
0 голосов
/ 25 апреля 2018

При попытке добавить таблицу 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!

Ответы [ 7 ]

0 голосов
/ 05 марта 2019

Существует две причины этой ошибки

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

enter image description here

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

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

Если хотите, выполните:

npm install @ angular / http

0 голосов
/ 27 мая 2019

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

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

    import { HttpModule } from '@angular/http

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

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

0 голосов
/ 01 февраля 2019

В моем случае было необходимо:

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

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

@Injectable()
export class FooService { ...
0 голосов
/ 07 декабря 2018

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

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

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

0 голосов
/ 10 сентября 2018

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

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

0 голосов
/ 18 мая 2018

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

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

и добавьте это в import

HttpClientModule
0 голосов
/ 25 апреля 2018

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