有没有一种方法可以将数组参数传递给管道



有什么方法可以将数组参数传递给管道吗

我做了一个这样的代码:

<div *ngFor="let List of Lists | customPipe: [1,2,3]">
<div>{{List.name}}</div>
</div>

而且似乎不起作用。

然而,如果我做了customPipe:[1],它只在数组中使用1个值

这是我的管道代码:

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'customPipe',
pure: false
})
export class PettypePipe implements PipeTransform {
transform(Lists: any[], args: number[]): any{
if(!args)return petType;
return (Lists||[]).filter(l=> l.id == args); 
}
}

因此,您想要完成的似乎是用管道过滤数组,显示作为管道参数声明的确切项目。

args是一个数字数组,在id必须等于数字数组的地方过滤一次。我认为你的意思是在args中找到id等于任何数字的任何项目。要做到这一点,你可以简单地做:

transform(Lists: any[], args: number[]): any {
return (Lists||[]).filter(l => args.includes(l.id));
}

这将返回包含args数组中指定的id的所有项。为了使给定一个数组或仅给定一个数字成为可选,您可以增强代码,使其看起来像这样:

transform(Lists: any[], args: number|number[]): any {
return (Lists||[]).filter(l => {
if(isNaN(args)){
return args.includes(l.id);
} else {
return l.id === args;
}
});
}

因此,为了回答您的问题:有没有一种方法可以将数组参数传递给管道?是的,但是您的管道必须以正确的方式处理数组。

最新更新