【发布时间】:2017-05-20 13:14:58
【问题描述】:
我正在尝试使用 angular2-google-maps 为我的项目添加自动完成功能。我在我的 AppModule 中添加了 AgmCoreModule.forRoot(带有库:'places'),然后在我的组件中添加了自动完成代码。我仍然收到“无法读取未定义的属性‘自动完成’”错误。我尝试检查 global var google 的值,而 google.map 不包含“places”字段。我对 angular2 比较陌生,所以需要一些帮助来理解我所缺少的。我的代码是
在 AppModule
从 'angular2-google-maps/core' 导入 { AgmCoreModule };
@NgModule({
bootstrap: [ App ],
declarations: [
App,
ErrorComponent,
],
imports: [ // import Angular's modules
AgmCoreModule.forRoot({
apiKey: '[API_KEY_REDACTED]',
libraries: ["places"]
}),
BrowserModule,
FormsModule,
ReactiveFormsModule,
HttpModule,
TranslateModule.forRoot(),
RouterModule.forRoot(ROUTES, { useHash: true })
],
providers: [ // expose our Services and Providers into Angular's dependency injection
ENV_PROVIDERS,
APP_PROVIDERS,
]
})
export class AppModule {
在 AppComponent 中:
import {MapsAPILoader} from 'angular2-google-maps/core';
import { NgZone } from '@angular/core';
declare var google: any;
export class EventInfoTab {
@ViewChild('gmap') gmap:any;
constructor(
private _loader: MapsAPILoader,
private zone : NgZone,
)
ngAfterViewInit(): void {
this._loader.load().then(() => {
let address = document.getElementById("location");
console.log("google", google);
let autocomplete = new google.maps.places.Autocomplete(address, {});
console.log ("autocomplete",autocomplete);
google.maps.event.addListener(autocomplete, 'place_changed', () => {
this.zone.run(() => {
console.log ("autocomplete place_changed",autocomplete);
var place = autocomplete.getPlace();
this.lat = place.geometry.location.lat();
this.lng = place.geometry.location.lng();
//alert(JSON.stringify(place));
this.markers[0] ={
lat: this.lat,
lng: this.lng,
label: 'x',
draggable: false
};
});
});
});....
【问题讨论】:
-
你的项目中安装
@types/googlemaps了吗? -
是的。我安装了@types/googlemaps。仍然出现同样的错误。
标签: google-maps angular