Javascript Angular Блокировка? - PullRequest
       10

Javascript Angular Блокировка?

0 голосов
/ 02 февраля 2020

У меня есть функция angular, которая ищет параметр 'list' в исходном URL-адресе, а при обнаружении выдаст go и получит информацию. В противном случае я хочу получить геолокации. Я не хочу получать геолокацию, если присутствует параметр URL. Я даже использую правильные термины?

constructor(private router: Router, private activatedRoute: ActivatedRoute, private providerService: ProviderService) { }

  ngOnInit(): void {
    this.processURL();
    this.processGPS();
  }

  private processURL() {
    console.log('1a');

    this.activatedRoute.queryParams.forEach(item => {
      if (item['list']) {
        console.log('1b');
        this.providerService.setCurrentProvider(item['list']);
      }
    });
  }

  private processGPS() {
    console.log('2a');
    window.navigator.geolocation.getCurrentPosition(position => {
      this.providerService.findByGeo(position.coords).subscribe(providers => {
        if (providers.length > 0) {
          console.log('2b');
          this.providerService.setCurrentProvider(providers[0]);
        }
      },
        () => {
          console.log('GeoLocation Not available or disabled');
        }).unsubscribe();
    });
  }

Ответы [ 2 ]

1 голос
/ 02 февраля 2020

queryParams является Наблюдаемым, а не массивом, поэтому вы должны подписаться на него.

Что я сделал:

  • подписаться на this.activatedRoute.queryParams
  • проверить, существует ли свойство списка в параметрах
    • Если оно существует, вызвать некоторую службу
    • В противном случае, если оно не существует, использовать GPS

ngOnInit(){
    this.activatedRoute.queryParams.subscribe( params => {
      if( typeof params.list !== 'undefined')
        this.providerService.setCurrentProvider( params.list );
      else
        this.processGPS();
    });
  }
1 голос
/ 02 февраля 2020

Переместить processGPS в другое, если параметр списка не найден:

ngOnInit(): void {
    this.processURL();
}

private processURL() {
    console.log('1a');

    this.activatedRoute.queryParams.subscribe(item => {
      if (item['list']) {
        console.log('1b');
        this.providerService.setCurrentProvider(item['list']);
      } else {
        this.processGPS();
      }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...