Как импортировать свойство страницы в службу данных с Angular? - PullRequest
0 голосов
/ 02 марта 2020

Я хочу импортировать trackingId из tracking.page.ts в geolocation.service.ts в моем приложении Ioni c. У кого-нибудь есть идеи, как это сделать с помощью Angular и TypeScript?

Ниже вы можете увидеть фрагмент кода.

tracking.page.ts

import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { Geolocation } from '@ionic-native/geolocation/ngx';
import { GeolocationService } from '../../app/geolocation.service';
import { UserService } from '../../app/user.service';
import { Insomnia } from '@ionic-native/insomnia/ngx';
import { LoadingController } from '@ionic/angular';
import { AlertController } from '@ionic/angular';
import { AppComponent } from '../app.component';
import { Storage } from '@ionic/storage';

declare var google;

@Component({
  selector: 'app-tracking',
  templateUrl: './tracking.page.html',
  styleUrls: ['./tracking.page.scss'],
})
export class TrackingPage implements OnInit {
  @ViewChild('map', { static: true }) mapElement: ElementRef;
  map: any;
  markers = [];
  geoLocations: any;

  watchLocationUpdates: any;
  isWatching: boolean;
  interval: any;

  geoLatitude: number;
  geoLongitude: number;
  geoAccuracy: number;
  timeStamp: any;
  uId: string;
  trackingId: string; // This is the trackingId
...

geolocation.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { environment } from '../environments/environment';

@Injectable({
  providedIn: 'root'
})

export class GeolocationService {

  databaseUrl = environment.firebase.databaseURL;

  constructor(private http: HttpClient
              ) {

    console.log('Hello GeolocationService Provider');
    console.log('GeolocationService: ', this.databaseUrl);

  }
...

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Определите trackingid в служебном файле с наблюдаемой темой, такой как

 public trackingid: BehaviorSubject<number> = new BehaviorSubject(1);

, а затем установите его внутри службы и получите также, как показано ниже

 public getTrackingId(): boolean {
        return this.trackingid.value;
    }


 public setTrackingId(){
        return this.trackingid.next(2);
    }

Теперь из компонента вы можете сделать получить и установить для trackingId.

0 голосов
/ 02 марта 2020

Вы можете создать службу, чтобы сохранить trackingid внутри нее, а затем внедрить ее во вторую страницу.

Попытка сделать это вне служб приведет к проблемам с зонированием и обнаружением изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...