how to solve NullInjectorError: No provider for HttpClient! problem in Ionic 4 (Angular 8)
how to solve NullInjectorError: No provider for HttpClient! problem in Ionic 4 (Angular 8)
我已经实现了一个简单的离子应用程序,它有一个调用 angular7-odooRpc 服务的页面,您可以在此处找到该服务 angular7-odoo-jsonrpc
,但我在调用 OdooRPCService
的构造函数时遇到此错误
ERROR Error: Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule)[OdooRPCService -> HttpClient]:
StaticInjectorError(Platform: core)[OdooRPCService -> HttpClient]:
NullInjectorError: No provider for HttpClient!
NullInjectorError: StaticInjectorError(AppModule)[OdooRPCService -> HttpClient]:
StaticInjectorError(Platform: core)[OdooRPCService -> HttpClient]:
NullInjectorError: No provider for HttpClient!
at NullInjector.get (core.js:778)
at resolveToken (core.js:2564)
at tryResolveToken (core.js:2490)
at StaticInjector.get (core.js:2353)
at resolveToken (core.js:2564)
at tryResolveToken (core.js:2490)
at StaticInjector.get (core.js:2353)
at resolveNgModuleDep (core.js:26403)
at NgModuleRef_.get (core.js:27491)
at resolveNgModuleDep (core.js:26403)
at resolvePromise (zone-evergreen.js:797)
at resolvePromise (zone-evergreen.js:754)
at zone-evergreen.js:858
at ZoneDelegate.invokeTask (zone-evergreen.js:391)
at Object.onInvokeTask (core.js:34182)
at ZoneDelegate.invokeTask (zone-evergreen.js:390)
at Zone.runTask (zone-evergreen.js:168)
at drainMicroTaskQueue (zone-evergreen.js:559)
在我的应用程序模块文件中,我导入了 HttpClientModule 并将其添加到 @ngModule 中的导入数组中
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';
import { OdooRPCService } from 'angular7-odoo-jsonrpc';
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
FontAwesomeModule,
HttpClientModule
],
providers: [
StatusBar,
SplashScreen,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
OdooRPCService
],
bootstrap: [AppComponent]
})
export class AppModule { }
我找到了一个对我有帮助的解决方法,
OdooRPCService.ts 中使用的 HttpClient 对象位于 OdooRPCService 文件夹内的 node_modules 下,它是使用依赖注入声明的。
解决方案是:我将 httpclient 对象从外部传递给 OdooRPCService 的构造函数。
我找到了一个更好的解决方案,我删除了服务的所有文件并创建了一个新服务(odooRPC.service.ts)并将odoorpc.service.ts的内容复制到odooRPC.service.ts(这很完美,因为他们使用位于项目文件夹下 node_modules 的 HttpClient)
我已经实现了一个简单的离子应用程序,它有一个调用 angular7-odooRpc 服务的页面,您可以在此处找到该服务 angular7-odoo-jsonrpc ,但我在调用 OdooRPCService
的构造函数时遇到此错误ERROR Error: Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule)[OdooRPCService -> HttpClient]: StaticInjectorError(Platform: core)[OdooRPCService -> HttpClient]: NullInjectorError: No provider for HttpClient! NullInjectorError: StaticInjectorError(AppModule)[OdooRPCService -> HttpClient]: StaticInjectorError(Platform: core)[OdooRPCService -> HttpClient]: NullInjectorError: No provider for HttpClient! at NullInjector.get (core.js:778) at resolveToken (core.js:2564) at tryResolveToken (core.js:2490) at StaticInjector.get (core.js:2353) at resolveToken (core.js:2564) at tryResolveToken (core.js:2490) at StaticInjector.get (core.js:2353) at resolveNgModuleDep (core.js:26403) at NgModuleRef_.get (core.js:27491) at resolveNgModuleDep (core.js:26403) at resolvePromise (zone-evergreen.js:797) at resolvePromise (zone-evergreen.js:754) at zone-evergreen.js:858 at ZoneDelegate.invokeTask (zone-evergreen.js:391) at Object.onInvokeTask (core.js:34182) at ZoneDelegate.invokeTask (zone-evergreen.js:390) at Zone.runTask (zone-evergreen.js:168) at drainMicroTaskQueue (zone-evergreen.js:559)
在我的应用程序模块文件中,我导入了 HttpClientModule 并将其添加到 @ngModule 中的导入数组中
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';
import { OdooRPCService } from 'angular7-odoo-jsonrpc';
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
FontAwesomeModule,
HttpClientModule
],
providers: [
StatusBar,
SplashScreen,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
OdooRPCService
],
bootstrap: [AppComponent]
})
export class AppModule { }
我找到了一个对我有帮助的解决方法, OdooRPCService.ts 中使用的 HttpClient 对象位于 OdooRPCService 文件夹内的 node_modules 下,它是使用依赖注入声明的。 解决方案是:我将 httpclient 对象从外部传递给 OdooRPCService 的构造函数。
我找到了一个更好的解决方案,我删除了服务的所有文件并创建了一个新服务(odooRPC.service.ts)并将odoorpc.service.ts的内容复制到odooRPC.service.ts(这很完美,因为他们使用位于项目文件夹下 node_modules 的 HttpClient)