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



这是关于谷歌地理编码的

@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( 不起作用

核心.js:6014 错误
错误:未捕获(承诺(: ReferenceError: google 未在新的 GeocodingService (GeocodingService.ts:53( 中定义

版本 b( 确实有效

有什么区别?对我来说 a( 和 b( 似乎是等价的?

我已经准备了一个堆栈闪电战,你可以试试这个。 我希望这有所帮助。

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

最新更新