代码之家  ›  专栏  ›  技术社区  ›  GoGo

错误类型错误:无法在搜索函数处读取未定义的属性“slice”-角度2+

  •  0
  • GoGo  · 技术社区  · 6 年前

    我有一个 angular5-data-table 我正在实现的模块。我可以使用它的所有功能。另外,我想在上面添加一个搜索功能。我添加了下面的代码(html和typescript)并开始接收 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 回复  |  直到 6 年前
        1
  •  0
  •   chrispy    6 年前

    基于这里的代码行 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 如果没有定义,它将无法切片并抛出该错误。确保你的 成员 在初始化数据表之前定义。