Хорошо, значит, вы получаете все элементы после загрузки страницы.Это может сработать, но тогда может произойти ошибка, что при вводе данные еще не закончили загрузку.Теперь вы говорите, что это не проблема, но она может стать проблемой позже, поэтому давайте исправим это.
Итак, давайте немного перепишем ваш код.
<ion-searchbar *ngIf="allCountries" [(ngModel)]="terms" (ionInput)="getItems()"></ion-searchbar>
<!-- show a loading paragraph when countries are being fetched -->
<p *ngIf="!allCountries">Loading....</p>
И ваш ts: (переименован loadedCountryList
в allCountries
Потому что мне понравилось больше)
allCountries: Array<any>;
countryList: Array<any>;
countryRef: firebase.database.Reference;
ionViewDidLoad() {
this.countryRef = firebase.database().ref('/order_details');
this.countryRef.on('value', countryList => {
let countries = [];
countryList.forEach( country => {
countries.push(country.val());
return false;
});
this.countryList = countries;
this.allCountries = countries;
});
}
getItems() {
// also check for no input
if (!this.terms || this.terms == '') {
// if no term is entered you might want to reset the search
this.countryList = this.allCountries;
return;
}
// allCountries isn't edited by the filter function so you can use that one
this.countryList = this.allCountries.filter((v) => {
if (v.name) {
if (v.name.toLowerCase().indexOf(this.terms.toLowerCase()) > -1) {
return true;
}
return false;
}
});
}
А потом покажите свой countryList
где-то:)