【发布时间】:2016-10-18 13:00:24
【问题描述】:
我正在尝试在 angular2 中制作一个过滤器,我制作了一系列这样的产品:
private products = ["Apple", "Banana", "Orange"];
这是我的过滤管道:
import {Pipe} from 'angular2/core';
@Pipe({name:'filter'})
export class FilterPipe {
transform(value, args) {
if(!args[0]){
return value;
}
else if (value) {
return value.filter(item => {
for (let key in item){
if((typeof item[key]==='string' || item[key] instanceof String) && (item[key].indexOf(args[0]) !== -1)){
return true;
}
}
});
}
}
}
在我的组件中,我添加了一个 ul 元素来显示产品,并添加了一个 input 元素来过滤它们:
<input type="text" [(ngModel)]="filterText">
<ul>
<li *ngFor="#product of products | filter: filterText">
{{product}}
</li>
</ul>
运行此代码时的问题是,它仅在输入第一个字母时有效(过滤),一旦输入更多字母,它将无法工作。有什么帮助吗?
【问题讨论】:
标签: arrays filter typescript angular