Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

119
Vistas
Importe dinámicamente módulos en el módulo según la configuración `forRoot`

Tengo un módulo que usa AgmCoreModule . Toma la apiKey aplicada en forRoot y la agrega AgmCoreModule a través LAZY_MAPS_API_CONFIG :

 ...some_module.ts export const AgmCoreModuleForRoot = AgmCoreModule.forRoot() imports: [ AgmCoreModuleForRoot, ] providers: [ { provide: LAZY_MAPS_API_CONFIG, useClass: GoogleMapsConfigService, deps: [GoogleMapsConfigServiceConfig], }, ], export class SomeModule { static forRoot( config?: GoogleMapsConfigServiceConfig, ): ModuleWithProviders<SomeModule> { return { ngModule: SomeModule, providers: [{ provide: GoogleMapsConfigServiceConfig, useValue: config }], }; } }

El módulo está hecho principalmente de componentes que no necesitan AgmCoreModule , por lo que SomeModule se puede importar con un forRoot en blanco como SomeModule.forRoot() .

Sin embargo, tengo problemas para usar SomeModule con aplicaciones que tienen AgmCoreModule importado en un módulo superior, digamos App.module . Y eso anula el AgmCoreModule de forRoot .

ejemplo:

 ...app.module imports:[ AgmCoreModule.forRoot({ apiKey: environment.googleApiKey, libraries: ['places'], }), ...downstream.module.ts imports: [ SomeModule.forRoot() <-- This overwrites the above apiKey making the google places api not work

Me gustaría tener la flexibilidad de cargar condicionalmente AgmCoreModule en función de la existencia de una apiKey en forRoot de SomeModule .

¿Es esto siquiera una cosa?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No puedo ver su AgmCoreModule , pero ¿ha intentado hacer algo como lo siguiente para evitar volver a importar los módulos principales?

 // module-import.guard.ts export function throwIfAlreadyLoaded(parentModule: any, moduleName: string) { if (parentModule) { throw new Error(`${moduleName} has already been loaded, import Core modules in the AppModule only.`); } } // agm-core.module.ts export class AgmCoreModule{ constructor(@Optional() @SkipSelf() parentModule: AgmCoreModule) { throwIfAlreadyLoaded(parentModule, 'AgmCoreModule'); } }

En cuanto a la situación de sobreescritura de la clave api , ¿no puede simplemente envolverla para devolver otra cosa si la configuración no está allí? ¿O SomeModule necesita comunicarse con GoogleMapsConfigService? Si no es así, tal vez algo como lo siguiente pueda ayudarlo:

 export class SomeModule { static forRoot(config?: GoogleMapsConfigServiceConfig): ModuleWithProviders<SomeModule> { if(config) { return { ngModule: SomeModule, providers: [{ provide: GoogleMapsConfigServiceConfig, useValue: config }], }; } return { ngModule: SomeModule }; } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda