Разбивка на страницы с возможностью поиска в Angular2

#search #angular #pagination #ng2-bootstrap

#Поиск #angular #разбивка на страницы #ng2-bootstrap

Вопрос:

Я получаю проблему с разбиением на страницы при поиске. Разбивка на страницы работает нормально, но когда я использовал окно поиска и ввел несколько букв, результаты изменились. Из-за разного результата разбивка на страницы ведет себя нерегулярно.

Я использую PaginationModule из 'ng2-bootstrap'

Я получаю users список с разбиением на страницы.. Вот мой users.component.ts

 export class UserListComponent implements OnInit {
     users: IUser[];
     term : string = '';

     public itemsPerPage: number = 1;
     public totalItems: number = 0;
     public currentPage: number = 1;

  ngOnInit() {
    this.getUsers();
  }

  getUsers(){
    this.dataService.getUsers(this.currentPage, this.itemsPerPage)
        .subscribe((users: PaginatedResult<IUser[]>) => {
                this.users = users;
            this.totalItems = users['pagination']['TotalItems'];       
        });
    }

  pageChanged(event: any, term: string): void {
      this.currentPage = event.page;
       if(term != '')
          this.search(term);
       else
        this.getUsers();
  }

  search(term) {
    this.dataService.searchUserList(term, this.currentPage, this.itemsPerPage)
        .subscribe((items : PaginatedResult<IUser[]>) => {
            this.totalItems = items['pagination']['TotalItems'];
            this.users = items;
      });
   }
}
  

Это users.component.html

      //Search input box
 <input #term (keyup)="search(term.value)" value="" class="form-control" placeholder="Search" autofocus>
     //pagination
 <pagination [boundaryLinks]="true" [totalItems]="totalItems" [itemsPerPage]="itemsPerPage" [(ngModel)]="currentPage" class="pagination-sm"
                previousText="amp;lsaquo;" nextText="amp;rsaquo;" firstText="amp;laquo;" lastText="amp;raquo;" (pageChanged)="pageChanged($event, term.value)"></pagination>
  

Проблема в том, что когда я нахожусь в page:3 и что-то ищу.. И результат, который я получил, содержит только 1 страницу после поиска, после чего я получил эту ошибку

ORIGINAL EXCEPTION: Expression has changed after it was checked. Previous value: '3'. Current value: '1'.

Я знаю, это потому, что я был на page:3 и после результата поиска у меня есть только 1 page вот почему разбивка на страницы ведет себя нерегулярно.

Есть ли какое-либо решение для этого?