0
gmaps apiを非同期にロードするサービスがあります。ロードすると、そのサービスにプロパティ名「isGoogleMapLibraryLoaded」がtrueに設定されて保存されます。経路変更時にAngular2サービスが再インスタンス化される
私は別のルート(コースをリフレッシュせずに)に戻り、前のページに戻ると、サービスが再インスタンス化され、 "isGoogleMapLibraryLoaded"プロパティが失われました。
ルートを切り替えるときにもサービス内のプロパティを設定するにはどうすればよいですか?
マイサービス:
import { Injectable } from '@angular/core';
const GOOGLE_MAPS_API_KEY = 'AIzaSyDvo543530SU_xsZLvZ6SjTFbt1FPW9FI';
const URL = `https://maps.googleapis.com/maps/api/js?key=${GOOGLE_MAPS_API_KEY}&callback=__onGoogleMapLoaded`;
@Injectable()
export class GoogleMapService {
/**
* Google maps loading status (althought loading is not completed)
*/
private isGoogleMapLibraryLoaded: Boolean = false;
constructor(){
}
getNewMapInstance(element, props){
console.log(this.isGoogleMapLibraryLoaded);
this._loading().then(() => {
return new google.maps.Map(element, props);
});
}
private _loading(){
return new Promise((resolve, reject) => {
if(!this.isGoogleMapLibraryLoaded){
this.isGoogleMapLibraryLoaded = true;
resolve();
}else{
resolve();
}
});
}
}
Iブートストラップでサービスを追加し、I成分コンストラクタでそれを注入してい
コンストラクタ(プライベートmapService:GoogleMapService){}
ngAfterViewInit() {
this.googleMapInstance = this.mapService.getNewMapInstance(this.googleMapWrapperElement.nativeElement, {
center: {lat: -34.397, lng: 150.644},
scrollwheel: false,
zoom: 8
});
}