У меня есть функция поиска, которая фильтрует пользователей в списке. Он отлично работает при первом поиске пользователя. Как, например, searchTerm = "User1" => Я получаю пользователя 1. Но если я изменю свой термин на = "Us", например, у меня останется только User1, а другие пользователи больше не отображаются. Так что проблема похожа на обратную фильтрацию. От "" до "пользователя" работает. но от "пользователя" до "" нет. Как я могу это исправить? Когда я регистрирую console.log(result);
Это точно показывает проблему. Массив фильтруется, но при удалении вещей он остается фильтрованным.
Мой код: userservice.ts
getList(): Observable<any> {
return this.http.get(this.url)
}
page.ts
public searchTerm: string = "";
userList: Observable<any>;
offset = 0;
searching = false;
ngOnInit() {
this.getAllUsers();
}
getAllUsers() {
this.userList = this.userService.getList()
.pipe(map(response => response.results));
}
filterUsers(searchTerm) {
this.searching = true;
return this.userList.pipe(
map(res => {
const result = res.filter(user => {
return user.username.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;
});
this.searching = false;
console.log(result);
return result;
})
);
}
searchList() {
this.userList = this.filterUsers(this.searchTerm);
console.log(this.searchTerm);
}
page.html
<ion-searchbar mode="ios" class="items-searchbar" animated mode="ios" [(ngModel)]="searchTerm" (ionChange)="searchList()" placeholder="Filter by name..."></ion-searchbar>
<ion-list class="pad" mode="ios">
<ion-item lines="none" *ngFor="let user of (userList | async); let i = index">
</ion-item>
</ion-list>