web-dev-qa-db-ja.com

エラーエラー:StaticInjectorError(AppModule)[UserformService-> HttpClient]:

PrimeNGテーブルを追加しようとしたときに、ここでビルドを中断しました: https://github.com/BillyCharter87/Tech-O-Dex-UI/tree/BrokeIt

package.jsonをTypeScript 2.3.4から2.4.0に更新したことを思い出しましたが、POST呼び出しにHeadersおよびHttpを使用していたという事実のために壊れました。私はそれを2.3.4に戻して設定しましたが、役に立ちませんでした。以下を追加することで修正できました。

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

それでも、HttpClientのエラーが発生しています。 HttpClientを次のようにプロバイダーにインポートしようとしました:providers: [HttpClient] for app.module.ts。

完全なエラーは次のとおりです。

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

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 { }
36
Kelvin Lai

これをapp.module.tsにインポートします

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

これをインポートに追加します

HttpClientModule
28
Ragulan

私の場合、以下が必要でした:

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

代わりに:

@Injectable()
export class FooService { ...
14
Mir-Ismaili

単にappmodule.tsにインポートしています

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

私の問題は解決しました

12
Sudhansu

このエラーには2つの理由があります

1)HttpModuleを2回インポートした場合、インポートの配列内

enter image description here

2)インポートしていない場合:

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

必要に応じて実行します:

npm install @ angular/http

3

コンポーネントデコレータセクションでユーザーが作成したすべてのカスタムサービスを提供します。例:プロバイダー:[serviceName]

注:コンポーネント間でデータを交換するためにサービスを使用している場合。プロバイダーの宣言:[サービス名]モジュールレベルで

2

考えられる理由は2つあります1.サービスでHttpClientを使用している場合、モジュールファイルでHttpClientModuleをインポートし、imports配列で言及する必要があります。

import { HttpClientModule } from '@angular/common/http';
  1. サービスで通常のHttpを使用している場合、モジュールファイルでHttpModuleをインポートし、imports配列でそれを記述する必要があります。

    import { HttpModule } from '@angular/http '

デフォルトでは、これはangularで利用できないため、@ angular/httpをインストールする必要があります

必要に応じて、プロジェクトでHttpClientModuleとHttpModuleの両方を使用できます。

1
Dan Patil