ОШИБКА TypeError: Невозможно прочитать свойство 'slice' из undefined в функции поиска - Angular 2+ - PullRequest
0 голосов
/ 06 июня 2018

У меня есть модуль angular5-data-table, который я реализую.Я был в состоянии использовать все его функциональные возможности.Кроме того, я хотел добавить в него функцию поиска.Я добавил коды ниже (как HTML, так и машинопись), и я начал получать сообщение об ошибке ERROR TypeError: Cannot read property 'slice' of undefined.

Мой HTML-код поиска:

<input type="text" class="form-control input-md" placeholder="Search by full name" #query (keyup)="searchMember(query.value)" [(ngModel)]="filter.name">

И код этого searchMember(query.value):

searchMember(query: string) {
  let members = this.allMembers;
  if (this.filter.firstName) {
    members = members.filter(o => o.firstName.toLowerCase().includes(query.toLowerCase()));
 }
  this.members = members;
  this.initializeTable(this.members);
  console.log(members);
}

Здесь initializeTable():

  private initializeTable(members: Member[]) {
    this.tableResource = new DataTableResource(members);
    this.tableResource.query({ offset: 0 }).then(items => this.items = items);
    this.tableResource.count().then(count => this.itemCount = count);
 }

И, наконец, вот инициализации:

filter: any = {};
tableResource: DataTableResource<Member>;
allMembers: Member[];

Я не уверен, что понял ошибку.Есть мысли?

1 Ответ

0 голосов
/ 06 июня 2018

На основе строки кода в классе DataTableResource:

https://github.com/brunano21/angular-4-data-table/blob/master/libs/datatable/src/tools/data-table-resource.ts#L9

Похоже, что метод "query" пытается нарезать свои собственные элементы, что установленов этом конструкторе.Вы делаете это здесь:

this.tableResource = new DataTableResource(members);

Так что, если members не определено, он не сможет разрезать и выдать эту ошибку.Убедитесь, что ваш members определен до инициализации таблицы данных.

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