Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

118
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda