Я работаю над Ionic и хочу отобразить содержимое разбора JSON (URL) в модальном компоненте. Мне удалось получить содержимое запроса JSON, но когда я пытаюсь вставить его в модальное окно, он возвращает неопределенное значение.
Вот фрагмент:
async openModal() {
this.http.get(URL).subscribe(
(data) => {
var URLparsed = data['features'][0]['properties']['nom_dep'];
console.info(URLparsed); // returns the content, that's ok
this.URLparsed2 = URLparsed;
},
(error) => {
console.info(error);
},
);
console.info('verif : ' + this.URLparsed2); // returns undefined
const modal2 = await this.modalCtrl.create({
component: Modal2Page,
cssClass: 'my-custom-class',
componentProps: {
URL: this.URLparsed2,
},
});
return await modal2.present();
}
Я должен администратор, я застрял на этом шаге. Есть идеи?
Любая помощь будет очень признательна.
Спасибо !
HTTP.get
является асинхронным.
console.info(URLparsed); // returns the content, that's ok
это вызов после console.info("verif : " + this.URLparsed2); // returns undefined
Вы можете преобразовать RxJs Observable
, возвращаемые методом get()
, в Promise
, а затем дождаться разрешения этого промиса.
async openModal() {
let data = await this.http.get(URL).toPromise();
var URLparsed = (data['features'][0]['properties']['nom_dep']);
console.info(URLparsed); // returns the content, that's ok
this.URLparsed2 = URLparsed;
console.info("verif : " + this.URLparsed2);
const modal2 = await this.modalCtrl.create({
component: Modal2Page,
cssClass: 'my-custom-class',
componentProps: {
'URL': this.URLparsed2,
}
});
return await modal2.present();
}
Этот код является примером и не тестировался.
Я проверил ваш код, и это именно то, что мне нужно! Большое спасибо @Марко !!
Пожалуйста, делайте правильный отступ в коде, чтобы его было легче читать.