Угловой, труба фильтра возвращает пустые данные / ложь

По этой ссылке я пытаюсь следовать учебному пособию по пользовательскому каналу фильтрации, но когда я запускаю свой проект в браузере, таблица становится пустой. Я не уверен, что я должен сделать, чтобы исправить это. Я уже использую импорт import { FilterPipe } from './filter.pipe'; на app.component.ts и объявление в module.ts.

//filter.pipe.ts

transform(productList: any, term: any): any {
  if (term === undefined) return productList;

  //not sure, but i think it causes by this line
  return productList.filter(function(Product) {
    return Product.prdName.toLowerCase().includes(term.toLowerCase());
  })
}

<form id="filter">
  <input type="text" class="form-control" name="term" [(ngModel)]="term" placeholder="filter by name" />
</form>

<tr *ngFor="let product of productList | filter: term">
  <td>{{product.prdName}}</td>
  <!--other table data-->
  <td>

Когда я удаляю | filter: term" часть данных таблицы показала, но когда я положил ее обратно, данные таблицы ничего не показывают. Может ли кто-нибудь помочь мне понять это? Извините за мой плохой английский.

2 ответа

В твоем компоненте как инициализируется термин переменная?

потому что это, возможно, не неопределено, но это null или empty (''), в начальном состоянии попробуйте сравнить с null, undefined и ''.

Я думаю, вам нужно добавить проверку, если термин является нулевым. Вы могли бы реализовать свою трубу следующим образом,

export class MyFilterPipe implements PipeTransform {

    transform(items: any[], term: any[]): any {
      if (!term) 
        return items;
      return items.filter(item => item.productName.indexOf(term) > -1);
    }
}

DEMO

Другие вопросы по тегам