Angular: NullInjectorError - No provider for Service
AngularでDI(依存性注入)のプロバイダーが見つからない場合のエラー
概要
Angularで依存性注入(DI)を使用する際に、必要なサービスのプロバイダーが登録されていない場合に発生するエラーです。
エラーメッセージ
NullInjectorError: R3InjectorError(AppModule)[UserService -> UserService]:
NullInjectorError: No provider for UserService!
原因
- @Injectable デコレータがない: サービスクラスに@Injectableが付いていない
- providedIn が設定されていない: サービスがどこにも提供されていない
- モジュールのproviders配列に追加されていない: 手動登録が必要な場合
- 遅延ロードモジュールの問題: 別モジュールのサービスにアクセスできない
解決策
1. @Injectable with providedIn: ‘root’
| |
2. モジュールのprovidersに追加
| |
3. コンポーネントレベルで提供
| |
4. 遅延ロードモジュールでの提供
| |
5. 依存関係の注入を確認
| |
よくある間違い
- HttpClientを使用しているがHttpClientModuleをインポートしていない
- RouterをインジェクトしているがRouterModuleがない
- 循環依存によるエラー
- スタンドアロンコンポーネントでの提供方法の違い
Angular の他のエラー
この記事は役に立ちましたか?