Функция поиска не работает при удалении searchTerm в панели поиска - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть функция поиска, которая фильтрует пользователей в списке. Он отлично работает при первом поиске пользователя. Как, например, 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>

1 Ответ

1 голос
/ 06 ноября 2019

Если я не ошибаюсь, вы используете "getAllUsers ()" только для init. И когда вы фильтруете свой список, вы настраиваете свой список пользователей на отфильтрованный список. Я полагаю, вам нужно использовать "getAllUsers ()" перед каждой фильтрацией или сохранять всех пользователей в отдельном списке, который вы можете отфильтровать впоследствии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...