我需要编写过滤器PIPE组件的帮助,该组件将仅过滤和显示包含所选搜索数组词的职位。 找到了一种使用1个搜索值返回的方法,但我需要它在数组中返回多个搜索结果
jobCategory=['admin','clerk','driver','labour','helper']
selectedCategory=['driver','helper']
HTML:
<ion-item *ngFor="let posting of (postingList | postingFilter:'jobCategory':selectedCategory)" >
PIPE:
export class PostingFilterPipe implements PipeTransform {
transform(items: any[], field : string, value : string): any[] {
if (!items) return [];
if (!value || value.length == 0) return items;
return items.filter(it => {
for (let index = 0; index < value.length; index++) {
const element = value[index]; ***STUCK***
}
});
}
}
答案 0 :(得分:0)
您可以尝试这样的事情:
export class PostingFilterPipe implements PipeTransform {
transform(items, field : string, value): any[] {
if (!items) return [];
if (!value || value.length == 0) return items;
return items.filter(it => value.filter(val => it[field].includes(val)).length > 0)
});
}
答案 1 :(得分:0)
我想知道在这种情况下是否根本需要字段参数/参数。 我没有对此进行测试,但是我会尝试将所选类别的数组作为参数传递。然后尝试使用Array.includes()仅返回已选择的作业类别(在所选类别数组中)。
希望有帮助:) 让我知道这是否不是您的意思。
jobCategory=['admin','clerk','driver','labour','helper']
selectedCategory=['driver','helper']
PIPE:
export class PostingFilterPipe implements PipeTransform {
// items => array to filter through
// field => field name (not needed??)
// array of selected categories
transform(items: any[], field : string, selectedValues: string[]): any[] {
if (!items) return [];
if (!value || value.length == 0) return items;
return items.filter(item => {
return value.includes(item);
});
}
}
HTML:
<ion-item *ngFor="let posting of (postingList | postingFilter:selectedCategory)" >