Вызов конструктора службы ведет себя иначе, чем вызов метода в конструкторе - PullRequest
1 голос
/ 02 февраля 2020

Это о Google Geocoding

@agm/core просит создать экземпляр google.maps.Geocoder в вашем сервисе? Вы должны внедрить экземпляр MapsAPILoader и использовать его обещание загрузки, чтобы сделать отложенный вызов на google.maps.Geocoder(), после того, как некоторые маги c завершили за занавесом.

Класс

import { MapsAPILoader } from '@agm/core'
export class GeocodingService 
{
  private geo : any; 
  constructor(private mapLoader: MapsAPILoader) {}
  ..
}

Версия a)

constructor(private mapLoader: MapsAPILoader) 
{
   this.mapLoader.load().then
   { 
      this.geo = new google.maps.Geocoder();  
   }
}

Версия b)

constructor(private mapLoader: MapsAPILoader) 
{
  this.getgeo();
}

private getgeo() 
{
   this.mapLoader.load().then
   { 
     this.geo = new google.maps.Geocoder();  
   }
}

Версия a ) не работает

core. js: 6014 ОШИБКА
Ошибка: Uncaught (inpromise): ReferenceError: Google не определена в новом GeocodingService (GeocodingService.ts: 53)

Версия б) работает

В чем разница? Для меня а) и б) кажутся эквивалентными?

1 Ответ

0 голосов
/ 02 февраля 2020

Я приготовил стекблиц , вы можете попробовать это. Надеюсь, это поможет.

Если проблема все еще видна, раскройте ее и дайте мне знать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...