В настоящее время я занимаюсь разработкой приложения с использованием Ionic 3 и Firebase.Я использую ionic-selectable (вы можете увидеть мой stackblitz здесь ), чтобы пользователь мог выбрать опцию из моего массива базы данных Firebase и вернуть выбранную опцию для идентификатора пользователя.
Iу меня есть все для работы, за исключением того, что ionic-selectable не считывает извлеченный массив из базы данных.
Я извлекаю массив, используя следующий код:
this.itemsRefdiag = afg.list('medicalhx');
this.items = this.itemsRefdiag.snapshotChanges().map(changes => {
return changes.map(c => ({ ...c.payload.val() }));
});
const dgRef = this.afg.database.ref();
dgRef.child('medicalhx').orderByChild('name').on('value', snapshot => { this.snapshot2 = JSON.stringify(snapshot).replace(/"[0-9]":{"name":|{|}/g, ""); })
My console.logв результате:
"Hyperthyroidism","Hypothyroidism","Diabetes Type 1","Diabetes Type 2"
Однако при использовании ионного выбора для private diagnoses: Diagnosis[] = [this.snapshot2]
я получаю «неопределенные» опции.Однако, когда я вручную набираю private diagnoses: Diagnosis[] = ["Hyperthyroidism","Hypothyroidism","Diabetes Type 1","Diabetes Type 2"]
, это работает.Я также попытался проанализировать массив JSON, используя вместо этого следующий код:
this.itemsRefdiag = afg.list('medicalhx');
this.items = this.itemsRefdiag.snapshotChanges().map(changes => {
return changes.map(c => ({ ...c.payload.val() }));
});
const dbRef = this.afg.database.ref();
dbRef.child('medicalhx').orderByChild('name').on('value', snapshot =>
{ let snapshot3 = JSON.stringify(snapshot).replace(/"}/g, `"`);
let snapshot4 = snapshot3.replace(/"[0-9]":{"name":|{|}|"/g, "");
this.snapshot2 = snapshot4.split(",");
});
Мой файл console.log приводит к объекту с отдельными строками (массивом):
["Hyperthyroidism","Hypothyroidism","Diabetes Type 1","Diabetes Type 2"]
Однако, ионный-selectable, похоже, не читает это, и я получаю неопределенную ошибку.Любые идеи о том, что я могу делать не так с массивом?
РЕДАКТИРОВАТЬ
Это на самом деле работает во второй раз, однако консольная ошибка выскакивает в первый рази я считаю, что это потому, что он не ждет появления результатов массива в первый раз.Есть ли способ добавить время ожидания загрузки массива?