ngx-toastr не отображается при первом клике или пользовательский интерфейс не обновляется в угловом цикле 5 дайджестов с помощью Google Map API - PullRequest
0 голосов
/ 15 ноября 2018

Я использую ngx-toastr в своих проектах Angular 5. У меня есть пользовательская форма, через которую я беру LAT и LNG для обратного геокодирования пользователя. Это условие применяется в моем коде.

Если город не найден, то должно отображаться сообщение toastr, но это сообщение toastr не отображается при первом нажатии, когда я нажимаю кнопку отправки, но когда я нажимаю второй раз, оно появляется. Что может быть причиной такого поведения?

Вот мой код:

saveProfile() {
  this.getGeoLocation(this.latitude, this.longitude, (val) => {
    console.log(val)
    l
    if (!val) {
      console.log('val is null')
      this.toastr.error('Latitude  , Logitude is not valid', 'Error')
      return;
    }
    ...
  })
}

Вот моя функция геокодирования:

getGeoLocation(lat: number, lng: number, cb) {
  let geocoder = new google.maps.Geocoder();
  let latlng = new google.maps.LatLng(lat, lng);

  let request = {
    latLng: latlng
  };
  geocoder.geocode(request, (results, status) => {
    console.log(results)
    if (results.length == 0) {
      cb(null)
    }

    if (status == google.maps.GeocoderStatus.OK) {

      let result = results[0];
      console.log(result)
      let rsltAdrComponent = result.address_components;
      for (let ac = 0; ac < rsltAdrComponent.length; ac++) {
        let component = rsltAdrComponent[ac];
        switch (component.types[0]) {
          case 'locality':
            this.cityName = component.long_name;
            break;
        }
      };
      if (result != null) {
        cb(this.cityName);

      } else {
        cb(null);
      }
    }
  });
}

1 Ответ

0 голосов
/ 16 ноября 2018

Я использую Google Maps API, которые работают за пределами угла.Так что это был вопрос угловой зоны.Я использовал функцию запуска зоны для этого

this.ngZone.run(() => {
  this.toastr.warning('This latitude and longitude is not found in selected city! fill 
 the correct one')
 })
...