Функция возврата значений формы в IONIC - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь выучить IONI C 5. Я использую родную геолокацию, чтобы вернуть широту и долготу. Из этой функции мне нужно извлечь lat и long, а затем сделать доступными для отправки на сервер через форму.

geolocate()
   {
         this.geolocation.getCurrentPosition().then((resp) => {
         let position = {
           latitude: resp.coords.latitude,
           longitude: resp.coords.longitude
         }
         return position;
    }).catch((error) => {
      console.log('Error getting location', error);
    });
  }

с помощью этой другой функции

login(form: NgForm) {
        this.geolocate();
        this.authService.login(form.value.email, form.value.password, this.latitude, this.longitude).subscribe(
            data => {
                this.alertService.presentToast("Logged In");
            },
            error => {
                console.log(error);
            },
            () => {
                this.dismissLogin();
                this.navCtrl.navigateRoot('');
            }
        );
    }

Ответы [ 2 ]

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

Вы должны вернуть вызов getCurrentPosition():

geolocate() {

return this.geolocation.getCurrentPosition().then((resp) => {
     return {
       latitude: resp.coords.latitude,
       longitude: resp.coords.longitude
     };
   }).catch((error) => {
    console.log('Error getting location', error);
   });
}

Затем дождитесь результата и сохраните его в переменной для использования в следующем вызове функции.

async login(form: NgForm) {
    const coords = await this.geolocate();

this.authService.login(form.value.email, form.value.password, coords.latitude, coords.longitude).subscribe(
        data => {
            this.alertService.presentToast("Logged In");
        },
        error => {
            console.log(error);
        },
        () => {
            this.dismissLogin();
            this.navCtrl.navigateRoot('');
        }
    );
}
0 голосов
/ 18 марта 2020
async login(form: NgForm) {
        let res = await this.geolocate();
        this.latitude = res.latitude;
        this.longitude = res.longitude;
        this.authService.login(form.value.email, form.value.password, this.latitude, this.longitude).subscribe(
            data => {
                this.alertService.presentToast("Logged In");
            },
            error => {
                console.log(error);
            },
            () => {
                this.dismissLogin();
                this.navCtrl.navigateRoot('');
            }
        );
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...