Null Injector Error when calling a method of my custom service

There is a page I’m using my own service. Then in the console, I’m getting the below error.

async subscribeMembership( id ){
  let loader = await this.loadingCtrl.create({
    spinner: null,
    message: `<div class="loader"></div><div class="loader_msg">Processing</div>`,
  });
  await loader.present();
    var response = await this.IapProvider.subscribeMembership( id, this.user_id);
    if(response['error'] == false){
      this.showAlert('Info',response['errorMsg']);
      loader.dismiss();
    } else if(response['error'] == true) {
      this.showAlert('Failed', response['errorMsg']);
      loader.dismiss();
    }else {
      this.showAlert('Failed', 'Unknown failure');
      loader.dismiss();
    }
  }
}

IapProvider is my custom class.

ERROR Error: Uncaught (in promise): NullInjectorError: R3InjectorError(AppModule)[[object Object] → [object Object] → [object Object]]:
NullInjectorError: No provider for [object Object]!
NullInjectorError: R3InjectorError(AppModule)[[object Object] → [object Object] → [object Object]]:
NullInjectorError: No provider for [object Object]!

Are there any proper steps that I need to follow?

1 Like

Post the entirety of your AppModule.

1 Like

This is my AppModule.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';

import { IonicModule, IonicRouteStrategy, NavParams } from '@ionic/angular';
import { IonicStorageModule } from '@ionic/storage';

import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { AtlinkNavBarComponent } from './components/atlink-nav-bar/atlink-nav-bar.component';
import { HttpClientModule } from '@angular/common/http';
import { GlobalVars } from './utils/GlobalVars';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { Network } from '@ionic-native/network/ngx';
import { LocationAccuracy } from '@ionic-native/location-accuracy/ngx';
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
import { Diagnostic } from '@ionic-native/diagnostic/ngx';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { Geofence } from '@ionic-native/geofence/ngx';
import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx';
import { BackgroundMode } from '@ionic-native/background-mode/ngx';
import { Device } from '@ionic-native/device/ngx';
import { MobileAccessibility } from '@ionic-native/mobile-accessibility/ngx';
import { NativePageTransitions } from '@ionic-native/native-page-transitions/ngx';
import { Keyboard } from '@ionic-native/keyboard/ngx';
import { PayPal } from '@ionic-native/paypal/ngx';
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
import { Vibration } from '@ionic-native/vibration/ngx';
import { InAppPurchase } from '@ionic-native/in-app-purchase/ngx';
import { Geolocation } from '@ionic-native/geolocation/ngx';

// Pages
import { LoginPage } from './pages/login/login.page';
import { HomePage } from './home/home.page';
import { IosSubscriptionPage } from './pages/ios-subscription/ios-subscription.page';

// Services
import { CalendarService } from './services/calendar.service';
import { CheckinFilterService } from './services/checkin-filter.service';
import { ConnectivityService } from './services/connectivity.service';
import { IapService } from './services/iap.service';
import { UserSubscriptionValidatorService } from './services/user-subscription-validator.service';
import { UserService } from './services/user.service';
import { Events } from './services/events';
import { Lois_Validator } from './validators/Lois_Validator';
import { FormBuilder } from '@angular/forms';

@NgModule({
  declarations: [AppComponent, AtlinkNavBarComponent, HomePage, LoginPage, IosSubscriptionPage],
  entryComponents: [],
  imports: [
    BrowserModule, 
    IonicModule.forRoot(), 
    AppRoutingModule, 
    IonicStorageModule.forRoot(),
    HttpClientModule
  ],
  providers: [
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }, 
    Storage, 
    StatusBar,
    Network,
    LocationAccuracy,
    AndroidPermissions,
    Diagnostic,
    SplashScreen,
    Geofence,
    ScreenOrientation,
    BackgroundMode,
    Device,
    MobileAccessibility,
    GlobalVars,
    NativePageTransitions,
    Keyboard,
    PayPal,
    InAppBrowser,
    Vibration,
    Geolocation,
    InAppPurchase,
    NavParams,
    FormBuilder,
    CalendarService,
    CheckinFilterService,
    ConnectivityService,
    IapService,
    UserSubscriptionValidatorService,
    UserService,
    Events,
    Lois_Validator
   ],
  bootstrap: [AppComponent]
})
export class AppModule {}

Are all the things in the providers stanza there decorated with @Injectable()? I’m particularly suspicious of GlobalVars and Lois_Validator. At the least, those are oddly named for things that should be service providers.