Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

242
Views
APP_INITIALIZER for lazy loaded module

I am developing a module that suppport forRoot and forChild. Whenever this module is imported with forRoot, forChild some methods of a custom service should be called. It works well for forRoot since I use APP_INITIALIZER, but the factory is not called anymore in the forChild of a lazy loaded module. How can I execute the methods that I have in my factory in the forChild so that it also works with lazy loaded modules? Is there some sort of equivelant of the APP_INITIALIZER for lazy loaded modules or a workaround?

export const TRANSLATION_CONFIGURATION = new InjectionToken<TranslationConfiguration<any>>('');

function initializeAppFactory(config: TranslationConfiguration<any> & { language: Language }, locutus: LocutusService): () => void {
  return () => {
      if (config.language) {
        locutus.registerRoot(config);
        return;
      }

      locutus.registerChild({
        scope: config.scope,
        loaders: config.loaders
      });
  };
}

@NgModule({
  declarations: [
    NgxLocutusComponent,
    LocutusDirective,
    LocutussPipe
  ],
  imports: [
    CommonModule
  ],
  exports: [
    NgxLocutusComponent,
    LocutusDirective,
    LocutussPipe
  ]
})
export class LocutusModule {

  static forRoot<T>(config: TranslationConfiguration<T> & { language: Language }): ModuleWithProviders<LocutusModule> {
    return {
      ngModule: LocutusModule,
      providers: [
        {
          provide: TRANSLATION_CONFIGURATION,
          useValue: config,
        },
        {
          provide: APP_INITIALIZER,
          useFactory: initializeAppFactory,
          deps: [
            TRANSLATION_CONFIGURATION,
            LocutusService
          ],
          multi: true
        },
      ]
    };
  }

  static forChild<T>(config: TranslationConfiguration<T>): ModuleWithProviders<LocutusModule> {
    return {
      ngModule: LocutusModule,
      providers: [
        {
          provide: TRANSLATION_CONFIGURATION,
          useValue: config,
        },
        {
          provide: APP_INITIALIZER,
          useFactory: initializeAppFactory,
          deps: [
            TRANSLATION_CONFIGURATION,
            LocutusService
          ],
          multi: true
        },
      ]
    };
  }
}
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!