Angular 如何从已过滤对象中过滤原始对象数组?
在我的Angular应用程序中,我有一个管道,它根据所选菜单返回一个过滤对象列表(默认情况下,第一个被选中),我还有另一个管道,它过滤搜索框内输入的对象 问题是,使用搜索管道,我会按菜单过滤过滤对象列表,而当用户搜索某个项目时,我会过滤并返回整个对象数组的列表,而不仅仅是从所选菜单 因此,我过滤对象列表的位置如下所示:Angular 如何从已过滤对象中过滤原始对象数组?,angular,Angular,在我的Angular应用程序中,我有一个管道,它根据所选菜单返回一个过滤对象列表(默认情况下,第一个被选中),我还有另一个管道,它过滤搜索框内输入的对象 问题是,使用搜索管道,我会按菜单过滤过滤对象列表,而当用户搜索某个项目时,我会过滤并返回整个对象数组的列表,而不仅仅是从所选菜单 因此,我过滤对象列表的位置如下所示: <div *ngFor="let plu of plus | pluFiltered: menu[menuSelected].id | pluSearch: se
<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”然后将过滤加号的逻辑放入一个函数中,在这个函数中,您可以根据搜索输入和菜单选项的两个值来决定如何过滤?简单得多。