Вам необходимо скрыть индикатор загрузки внутри абонента. Самый простой способ - это скрыть его при поступлении первых данных:
for (let i = 0; i <= this.Cart.length - 1; i++) {
let product = this.db.object('/menuItems/' + this.Cart[i].item.itemId);
product.valueChanges().subscribe((prodData: any) => {
if (prodData != null) {
this.Cart[i].item.price = prodData.price[0];
}
loading.dismiss();
});
}
Немного сложнее скрыть это после того, как все данные вернутся, но это не должно быть слишком сложно. Простой способ - подсчитать, сколько ответов вы получили. Как только это количество будет равно количеству товаров в корзине, вы можете скрыть индикатор загрузки.
var responseCount = 0;
for (let i = 0; i <= this.Cart.length - 1; i++) {
let product = this.db.object('/menuItems/' + this.Cart[i].item.itemId);
product.valueChanges().subscribe((prodData: any) => {
if (prodData != null) {
this.Cart[i].item.price = prodData.price[0];
}
if (responseCount++ == this.Cart.length) loading.dismiss();
});
}