2016-09-19 66 views
0

我想过滤多个从现场条件的食物(输入&下拉)。我可以分别过滤它们,但我不知道如何使它们一起工作角2.0.0最后 - 自定义管道过滤与多个从现场条件

我创建了两个单独的自定义管道(其中一个用于输入过滤器,另一个用于下拉过滤器)使事物更加模块化。

这里是输入管道背后的逻辑:

// Input Filter 
transform(value: IProduct[], filter: string): IProduct[] { 
    filter = filter ? filter.toLocaleLowerCase() : null; 
    return filter ? value.filter((product: IProduct) => 
     product.prodName.toLocaleLowerCase().indexOf(filter) !== -1) : value; 
} 

后面的下拉管的逻辑:

// Dropdown Filter 
transform(value: IProduct[], filter: string): IProduct[] { 
    return filter ? value.filter((product: IProduct) => 
     product.prodCategory.indexOf(filter) !== -1) : value; 
} 

这是在模板视图定制管:

<tr *ngFor='let _product of _products | DropdownProductFilter: ddlistFilter.name || InputProductFilter: listFilter' 

这里是一个例子 http://plnkr.co/qwsk86hHLbI26w3HVMdV

回答

1

我认为你必须在你的模板一个错字,改变你的|||将这样的伎俩:

<tr *ngFor='let _product of _products | DropdownProductFilter: ddlistFilter.name | InputProductFilter: listFilter'>