我在Angular4中有以下用例: 4个单独选项卡中的4个数据列表,全部显示在(可排序)表中。
在标签上方,我有一个下拉列表,您可以在其中选择一个过滤器,该过滤器应该过滤您当前显示的列表。
因此,在HTML模板中,每个标签看起来都是这样的:
<tr *ngFor="let item of firstTabItems | filterNameFilter: someType | orderBy: sortOrder">
现在,当我从下拉列表中选择过滤器时,它会对所有四个列表进行排序。但是用户只查看一次,每次选择过滤器时,它都会再次过滤所有四个列表。这在性能方面非常无用。基本上,我希望仅在选择选项卡时应用过滤器。
目前,过滤器看起来有点像这样(愚蠢的版本):
@Pipe({
name : 'filterNameFilter'
})
export class filterNameFilter implements PipeTransform {
constructor() { }
transform(items: any[], some_type: string): any {
return items.filter(item => item.type === some_type);
}
}
知道如何才能最好地实现这一目标吗?