Установить ключ API Google для AGM с помощью файла конфигурации - PullRequest
0 голосов
/ 15 апреля 2020

Я использую клиентскую библиотеку Google Geocode в своем приложении Angular 7. Здесь мне нужно извлечь ключ API Google из моего файла конфигурации JSON, а затем установить его в AGM.

Мой файл конфигурации загружается на основе среды сборки (Dev / QA / Prod), поэтому что я загружаю его, как показано ниже.

load() {
const jsonFile = `assets/config/config.${environment.name}.json`;
return new Promise((resolve, reject) => {
  this.http.get(jsonFile).pipe(map((res: IAppConfig) => {
    AppConfig.settings = <IAppConfig>res;
    return AppConfig.settings;
  })).subscribe(() => {
    resolve();
  });
}).catch((response: any) => {
  console.log(`Could not load file '${jsonFile}': ${JSON.stringify(response)}`);
});

}

Я дал LAZY_MAPS_API_CONFIG в app.module.ts как провайдер.

{
  provide: LAZY_MAPS_API_CONFIG,
  useClass: GoogleMapsConfigService
}

В классе GoogleMapsConfigService я установил ключ API Google, как показано ниже:

  export class GoogleMapsConfigService {
  apiKey: string;

  constructor(appConfig: AppConfig) {
    appConfig.load().then(() => {
      this.apiKey = AppConfig.settings.googleApiKey;
    });
  }
}

Однако, таким образом, мой ключ API не устанавливается, потому что я думаю, так как я загружаю свой файл конфигурации как обещание и время загрузки AGM устанавливает ключ API как пустой. На консоли браузера появляется следующее предупреждение.

Карты Google JavaScript Предупреждение API: NoApiKeys

ПРИМЕЧАНИЕ: Я попытался установить ключ API в AgmCoreModule.forRoot() в app.module.ts, также загрузив ключ API из конфига в APP_INITIALIZER. но я не мог заставить его работать.

Может кто-нибудь, пожалуйста, дайте мне понимание, чтобы решить эту проблему. Спасибо.

...