Angular Universal - гугл не определен - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть директива, которая делает текстовый ввод в автозаполнение мест в 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, но мне нужно, чтобы он работал при загрузке страницы.

...