我想通过仅显示具有特定 groupId 的 items 来过滤角度表的 dataSource >属性。
component.html
<mat-table [dataSource]="groupSource | filter : currentGroupId"></mat-table>
filter.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filter'
})
// return items of a group
export class FilterPipe implements PipeTransform {
transform(group: any[], currentGroupId: number): any[] {
return group.filter( item=> item.groupId = currentGroupId);
}
}
但是,我收到此错误:
错误TypeError:group.filter不是函数
在FilterPipe.push ../ src / app / filter.pipe.ts.FilterPipe.transform(filter.pipe.ts:9)
在checkAndUpdatePureExpressionInline(core.js:9949)
在checkAndUpdateNodeInline(core.js:10518)
在checkAndUpdateNode(core.js:10476)
在debugCheckAndUpdateNode(core.js:11109)上
在debugCheckDirectivesFn(core.js:11069)
at Object.eval [作为updateDirectives](BasketComponent.html:144)
at Object.debugUpdateDirectives [作为updateDirectives](core.js:11061)
在checkAndUpdateView(core.js:10458)
在callViewAction(core.js:10699)
我在做什么错了?
答案 0 :(得分:1)
问题出在相等性检查中。应该是
return group.filter( item=> item.groupId === currentGroupId);
答案 1 :(得分:0)
当您提供的数据源很可能不是数组的MatTableDataSource实例时,您尝试在Array上使用filter方法。实际上,MatTableDataSource具有应该是字符串的filter属性。
但是,您将要使用MatTableDataSource的filterPredicate函数。
Read the documentation for the correct way to filter a Material data source.