У меня есть директива, которая делает текстовый ввод в автозаполнение мест в Google, который выглядит следующим образом:
import { Directive, AfterViewInit , Output, EventEmitter, NgZone, ElementRef } from '@angular/core'
// import { MapsAPILoader } from '@agm/core'
import { MapsAPILoader } from '@laurentgoudet/agm-core';
@Directive({
selector: '[locationAutocomplete]'
})
export class LocationAutocompleteDirective implements AfterViewInit {
@Output() locationChange: EventEmitter<any> = new EventEmitter();
constructor(
private mapsLoader: MapsAPILoader,
private ngZone: NgZone,
private searchElementRef: ElementRef
) { }
ngAfterViewInit() {
this.mapsLoader.load().then(() => {
let autocomplete = new google.maps.places.Autocomplete(this.searchElementRef.nativeElement, {
//types: ["address"]
});
autocomplete.addListener("place_changed", () => {
this.ngZone.run(() => {
// Get the place result
let place: any = autocomplete.getPlace();
// Verify result
if (place.geometry === undefined || place.geometry === null) {
return;
}
place.originalAddress = this.searchElementRef.nativeElement.value
this.locationChange.emit(place);
});
});
});
}
}
Проблема начинается, когда я пытаюсь обслуживать приложение с помощью Universal.Я получаю следующую ошибку:
ReferenceError: Google не определен
Есть ли способ ее устранения?Самый простой способ - поместить его под platformIsBrowser
, но мне нужно, чтобы он работал при загрузке страницы.