javascript - 使用来自 Angular 2 上另一个组件的搜索词过滤组件中的记录

标签 javascript angular

我有一个名为 task-board 的组件,其中有下表:

<tr *ngFor="let task of tasks | taskFilter: searchText" >
<td>{{ task.taskName }}</td>
<td>{{ task.location }}</td>
<td>{{ task.description }}</td>
<td>{{ task.timeElapsed }}</td>
<td>{{ task.completed }}</td>
</tr>

此外,我还有一个名为 task-search 的组件,它具有以下代码:

<label>Search:</label>
<input type="text" [(ngModel)]="searchText" />
<p>You are looking for: {{ searchText }}</p>

还有一个名为 taskFilter 的管道,代码如下:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'taskFilter'
})
export class TaskFilterPipe implements PipeTransform {

transform(items: any[], searchText: string): any[] {
  if(!items) return [];
  if(!searchText) return items;
    searchText = searchText.toLowerCase();
     return items.filter( it => {
  return it.toLowerCase().includes(searchText);
   });
 }
}

我的目标是使用 task-search 中的输入值过滤来自 task-board 的元素。

目前,即使我写了一些东西,它也不会过滤。

解决这个问题的最佳方法是什么?

最佳答案

我没有检查你的过滤器代码,但首先你需要任务板和任务搜索之间的绑定(bind)才能传递 searchText。所以试试这个:

// task-board.component.ts
@Input() searchText;

// task-search.component.html
<task-board [searchText]="searchText"></task-board>

如果您不想在任务板和任务搜索之间进行直接绑定(bind),您也可以创建一个服务来执行此操作

关于javascript - 使用来自 Angular 2 上另一个组件的搜索词过滤组件中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013990/

相关文章:

javascript - 如何显示无序列表元素的工具提示文本?

javascript - 如何在内部使用 JavaScript 为数字添加逗号分隔符?

javascript - 当我添加 .text() 时,简单的 d3.js 条形图会反转

javascript - 如何从json格式中选择特定的id...?

node.js - 从 cli 生成新的 Angular 应用程序引发 npm 错误

javascript - getJSON 向 Controller 发送 null 参数

javascript - 作为参数传递给函数的 jQuery 对象是值副本而不是引用?

javascript - 在 Angular 中使用 `fetch`

javascript - 刷新后上传图像不会改变,但在文本编辑器中保存后会改变

angular - 使用剑道的列选择器在剑道网格中加载带有代码的列