服务构造函数调用的行为与构造函数中的方法调用不同

时间:2020-02-02 13:57:20

标签: angular methods behavior

这与Google地理编码有关

@agm/core要求在您的服务中构造google.maps.Geocoder的实例?您必须注入一个MapsAPILoader实例,并在幕后完成一些魔术之后,使用其负载承诺来延迟调用google.maps.Geocoder()

课程

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错误
错误:未捕获(未承诺): ReferenceError:未在新的GeocodingService(GeocodingService.ts:53)上定义google

版本b)有效

有什么区别?对我来说,a)和b)似乎是等效的?

1 个答案:

答案 0 :(得分:0)

我已经准备好stackblitz,您可以尝试一下。 希望对您有所帮助。

如果仍然遇到相同的问题,请分叉让我知道