Angular 如何从已过滤对象中过滤原始对象数组?

Angular 如何从已过滤对象中过滤原始对象数组?,angular,Angular,在我的Angular应用程序中,我有一个管道,它根据所选菜单返回一个过滤对象列表(默认情况下,第一个被选中),我还有另一个管道,它过滤搜索框内输入的对象 问题是,使用搜索管道,我会按菜单过滤过滤对象列表,而当用户搜索某个项目时,我会过滤并返回整个对象数组的列表,而不仅仅是从所选菜单 因此,我过滤对象列表的位置如下所示: <div *ngFor="let plu of plus | pluFiltered: menu[menuSelected].id | pluSearch: se

在我的Angular应用程序中,我有一个管道,它根据所选菜单返回一个过滤对象列表(默认情况下,第一个被选中),我还有另一个管道,它过滤搜索框内输入的对象

问题是,使用搜索管道,我会按菜单过滤过滤对象列表,而当用户搜索某个项目时,我会过滤并返回整个对象数组的列表,而不仅仅是从所选菜单

因此,我过滤对象列表的位置如下所示:

<div *ngFor="let plu of plus | pluFiltered: menu[menuSelected].id | pluSearch: searchModel" class="col mb-4">
</div>
@Pipe({
  name: 'pluFiltered'
})
export class PluFilteredPipe implements PipeTransform {

  transform(list: any[], menu: number): any {
    return list ? list.filter(item => item.menu === menu) : [];
  }
}

@Pipe({
  name: 'pluSearch'
})
export class PluSearchPipe implements PipeTransform {

  transform(list: any[], filterText: string): any {

    return list ? list.filter(item => item.desc.search(new RegExp(filterText, 'i')) > -1) : [];

  }

}

那么,我如何将原始列表传递给pluSearch管道,并返回基于该管道的原始筛选列表?

很抱歉没有直接回答这个问题,但通过尝试在标记中组合管道,您的生活似乎比需要的更艰难。有时,使用代码会更简洁——为什么不“让getFilteredPlus()的plu”然后将过滤加号的逻辑放入一个函数中,在这个函数中,您可以根据搜索输入和菜单选项的两个值来决定如何过滤?简单得多。