代码之家  ›  专栏  ›  技术社区  ›  devC

角度谷歌地图(agm):在app.module中获取api密钥

  •  0
  • devC  · 技术社区  · 6 年前

    我在用 Angular Google Maps (ngm)我的角6应用。我想将api密钥存储在config.json文件中,并通过配置服务读取它。配置服务已在应用程序初始值设定项中调用,如下所示:

    应用模块:

      export function initializeData(appConfig: AppConfig, authService: AuthService, localeService: LocaleService, clientConfigService: ClientConfigService, globalService: GlobalService) {
      return () => {
        try {
          return appConfig.load().then(() => {
            return Promise.all([authService.authenticateClient(), //...some other configs...//]).then((results) => {
              return Promise.resolve();
            }, (err) => {
              return Promise.reject(err);
            });
          });
        } catch (e) {
        }
    
      }
    }
    
    @NgModule({
    providers: [
     AppConfig,
     {
          provide: APP_INITIALIZER,
          useFactory: initializeData,
          deps: [AppConfig, AuthService],
          multi: true
        },
    ],
    imports: [
     AgmCoreModule.forRoot(),
    ]
    });
    

    我还进口了agmcoremodule。我知道我必须编写一个提供者来懒惰地加载API密钥如下:

    { provide: LAZY_MAPS_API_CONFIG, useClass: GoogleMapConfigService },
    

    在googlemapconfigservice类中,我必须从配置访问api密钥: AppConfig.settings.googleMapsApiKey;

    问题是-AppOrth.St设置是未定义的,因为AppIn初始化器可能在 GoogleMapConfigService 被称为。

    我该怎么做才能解决这个问题?

    1 回复  |  直到 6 年前
        1
  •  0
  •   amir.algazi    6 年前

    试图在这样的“提供者”中宣布AppConfig:

    providers: [
     AppConfig,
     {
          provide: APP_INITIALIZER,
          useFactory: initializeData,
          deps: [AppConfig, AuthService],
          multi: true
        },
    ]