Ошибка 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';
-
Если вы используете обычный Http в своих сервисах, вам нужно импортировать HttpModule в файл модуля и указать его в массиве import.
import { HttpModule } from '@angular/http
'
По умолчанию это не доступно в angular, тогда вам нужно установить @angular/http
Если вы хотите, вы можете использовать как HttpClientModule, так и HttpModule в своем проекте.
Ответ 7
Есть две причины этой ошибки
1) В массиве импорта, если вы дважды импортировали HttpModule
2) Если вы не импортировали:
import { HttpModule, JsonpModule } from '@angular/http';
Если вы хотите, то запустите:
npm install @angular/http
Ответ 8
Добавить
import { HttpClientModule } from '@angular/common/http';
в app.module.ts
файл. Это решило мою проблему.