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!
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
私の場合、以下が必要でした:
@Injectable({
providedIn: 'root' // <- ADD THIS
})
export class FooService { ...
代わりに:
@Injectable()
export class FooService { ...
単にappmodule.ts
にインポートしています
import { HttpClientModule } from '@angular/common/http';
imports: [
BrowserModule,
FormsModule,
HttpClientModule <<<this
],
私の問題は解決しました
コンポーネントデコレータセクションでユーザーが作成したすべてのカスタムサービスを提供します。例:プロバイダー:[serviceName]
注:コンポーネント間でデータを交換するためにサービスを使用している場合。プロバイダーの宣言:[サービス名]モジュールレベルで
考えられる理由は2つあります1.サービスでHttpClientを使用している場合、モジュールファイルでHttpClientModuleをインポートし、imports配列で言及する必要があります。
import { HttpClientModule } from '@angular/common/http';
サービスで通常のHttpを使用している場合、モジュールファイルでHttpModuleをインポートし、imports配列でそれを記述する必要があります。
import { HttpModule } from '@angular/http
'
デフォルトでは、これはangularで利用できないため、@ angular/httpをインストールする必要があります
必要に応じて、プロジェクトでHttpClientModuleとHttpModuleの両方を使用できます。