@alexlili

Angular 4 — как сохранить полученные данные для дальнейшего использования?

Есть сервис который получает координаты месторасположения юзера. Я вызываю этот сервис в другом сервисе, вытаскиваю координаты и сохраняю в глобальных переменных. Затем я использую эти переменные для формирования урл для запроса на сервер. Но в консоле я получаю ошибку, так как эти глобальные переменные undefined.
Подскажите если не трудно что я делаю не так. Заранее спасибо.

// service for get coords

@Injectable()
export class GoogleMapsSettingsService {

  constructor() {}

  getUserLocation(): Observable<any> {
    return Observable.create (observer => {
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(position => {
          observer.next(position);
          observer.complete();
          console.log(position);
        }, error1 => {
          this.getUserDefaultLocation();
        });
      }
    });
  }

// second service for http request
@Injectable()
export class ConnectionService {
  baseUrl = 'https://SITE.com/';
  private lang$: string;
  private step$ = 1;
  private latitude$: number;
  private longitude$: number;
  private radius$ = 5;

constructor (private http: HttpClient, private systemTranslateService: SystemTranslateService, private googleMapsService: GoogleMapsSettingsService) 
{
this.googleMapsService.getUserLocation().subscribe(data => {
      this.latitude$ = data.coords.latitude;
      this.longitude$ = data.coords.longitude;
    });
  }
}


// получаю undefined вместо this.longitude$ // и this.latitude$
getDepartmentByLocation(): Observable<any> {
    return this.http.get(this.baseUrl + 'step/' + this.lang$ + '/' + this.step$ + '/area/' + this.latitude$ + '/' + this.longitude$ + '/' + this.radius$);
  • Вопрос задан
  • 197 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы