角度自定义管道返回表数据错误

时间:2018-09-20 16:44:16

标签: angular angular-filters angular2-custom-pipes

component.html:

<input 
  type="text" 
  [(ngModel)]="searchText" 
  placeholder="search your products here" 
  name="searchText">

<table class="table table-bordered">
  <thead>
    <tr>
      <th>Id</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr *ngFor="let obj of product| filter: searchText">
      <td>{{obj.id}}</td>
      <td>{{obj.description}}</td>
    </tr>
  </tbody>
</table>

filter.ts:

transform(items: any, searchText: string): any[] {
  if (!items || !searchText || searchText === undefined) {
    return items;
  }

  return items.filter(items =>
    items.description.toLowerCase().includes(searchText.toLowerCase));
}

控制台显示项目。说明未定义。

model.ts:

export class products{
  id: number;
  description: string;    
}

在页面加载之前没有错误,一旦我开始在搜索框中输入内容,就会显示错误。错误显示在下面的代码中。

<input 
  type="text" 
  [(ngModel)]="searchText" 
  placeholder="search your issues here" 
  name="searchText">

1 个答案:

答案 0 :(得分:2)

您不是在这里致电searchText.toLowerCase。您需要调用它。另外,您要将输入和每个项目命名为items。可能是另一个问题。

将您的transform实现更改为:

transform(items: any, searchText: string): any[] {
  if (!items || !searchText || searchText === undefined) {
    return items;
  }

  return items.filter(item =>
    item.description.toLowerCase().includes(searchText.toLowerCase()));
}

当然,除非是您的OP中的错字。

这里是Sample StackBlitz供您参考。