Angular2根据字符串数组过滤对象数组

时间:2016-08-26 23:40:54

标签: angular angular2-template angular2-directives

我有一个用户数组,每个用户都有一个名字(user.name):

let users = Array<User>();

想象一下,我有这个字符串数组,我希望根据下一个字符串数组过滤users数组:

let filterargs = ['Lau', 'Za'];

这是我的标记:

<li *ngFor="let user of usersList | filter: filterargs; let i = index;">

这是我的管道过滤器,但它不起作用:

import {Pipe, Injectable, PipeTransform} from "@angular/core";

@Pipe({name: 'filter', pure: false})
@Injectable()
export class FilterPipe implements PipeTransform {

    transform(items: any[], args: any[]): any {
        // filter items array, items which match and return true will be kept, false will be filtered out
        return items.filter(item => item.name.toLowerCase().indexOf(args[0].name.toLowerCase()) !== -1);
    }
}

2 个答案:

答案 0 :(得分:5)

我认为您的过滤功能不正确。 尝试做:

return items.filter(item => item.name.toLowerCase().indexOf(args[0].toLowerCase()) !== -1);

希望这有助于。

答案 1 :(得分:0)

也许这会对你有所帮助:

return items.filter(item => item[0].name.toLowerCase().indexOf(args[0].toLowerCase()) !== -1);

我对数组中的对象有类似的问题,通过添加[0],它对我有效。