角材料表定制过滤器

时间:2018-07-09 17:20:07

标签: angular angular-material

我正在使用垫子桌子。我知道内置过滤器。还有filterPredicate。但是filter谓词仅接受filterValue: string。我希望能够使用幻灯片切换功能过滤表格,并仅显示具有isActive标志为true或isActive标志为false的对象。但是默认过滤器不提供此类功能。我自己想出了一些解决方法,但我希望有更好的解决方案。
1)我可以自己过滤数组,但是这样我需要保留初始数组并将经过过滤的数组传递给表。而且我不喜欢将两个数组用于相同的信息的想法。
2)当滑动切换更改时,例如&@changedToggle-true,我可以将特殊值传递给过滤器,并在过滤谓词中检查该值,并仅过滤具有正确isActive标志的对象。但这对我来说仍然不是很好的解决方案。
有什么好的方法可以实现我想要的。

2 个答案:

答案 0 :(得分:0)

我不知道我是否理解您的问题,但是您可以使用以下内容扩展标准数据源:

YourCustomDatasource extends Datasource<YourObject> {
 private objects: Observable<Obj[]>;

  filterCustom() {
   return objects.filter(elem => elem.isActive)
   .map(elem => elem)
   .subscribe(
    err => console.error(err),
  );
}

答案 1 :(得分:0)

您可以利用mat-table-filter来满足任何@angular/material表过滤要求。它使您不必实施过滤样板。您可以根据自己的需要进行任何自定义。

Stackblitz演示:https://stackblitz.com/github/HalitTalha/mat-table-filter-example

相关问题