Angular 角度材质表自定义过滤器

Angular 角度材质表自定义过滤器,angular,angular-material,Angular,Angular Material,我用的是垫子桌子。我知道内置过滤器。和过滤器预测。但是过滤器谓词只接受filterValue:string。我希望能够使用滑动切换筛选表,并仅显示具有例如isActive标志true或isActive标志false的对象。但默认过滤器不提供这种功能。我自己想出了一些解决办法,但我希望有更好的解决办法 1) 我可以自己过滤数组,但这样我需要保留初始数组并将过滤后的数组传递给表。我不喜欢对相同的信息使用两个数组 2) 当滑动切换被更改时,我可以将特殊值传递给过滤器,例如&@changedToggle

我用的是垫子桌子。我知道内置过滤器。和
过滤器预测
。但是过滤器谓词只接受
filterValue:string
。我希望能够使用滑动切换筛选表,并仅显示具有例如
isActive
标志true或
isActive
标志false的对象。但默认过滤器不提供这种功能。我自己想出了一些解决办法,但我希望有更好的解决办法
1) 我可以自己过滤数组,但这样我需要保留初始数组并将过滤后的数组传递给表。我不喜欢对相同的信息使用两个数组
2) 当滑动切换被更改时,我可以将特殊值传递给过滤器,例如
&@changedToggle true
,并在过滤器谓词中检查该值,并仅过滤具有右isActive标志的对象。但这对我来说仍然不是个好办法

有没有什么好方法可以实现我想要的

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

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

  filterCustom() {
   return objects.filter(elem => elem.isActive)
   .map(elem => elem)
   .subscribe(
    err => console.error(err),
  );
}
YourCustomDatasource扩展了Datasource{
私人物品:可观察;
filterCustom(){
返回objects.filter(elem=>elem.isActive)
.map(elem=>elem)
.订阅(
err=>console.error(err),
);
}

你能解释一下这个objects属性是如何设置的吗?它给我带来了一个例外,对象是未定义的。