我可以帮助您翻译有关IT技术的内容,以下是需要翻译的内容:
我在 Angular2 中使用自定义过滤器时遇到了问题。
我的情况如下:
我的页面包含多个自定义组件。其中一个组件负责在页面左侧显示数据:(组件A)
<md-list-item *ngFor="let item of items | filter : filter | sort: sort; let i = index" " >
<template [render]="itemTemplateRef" [context.item]="item"
[context.index]="index"></template>
</md-list-item>
另外,筛选是通过自定义筛选来完成的:
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({ name: 'filter' })
export class FilterPipe implements PipeTransform {
transform(values: any[], filter: any): any {
if (typeof filter !== "function") return values;
return values.filter((elem) => {
return filter(elem);
});
}
}
在主页面中,我将一个函数作为输入属性发送到组件A中:
public filter = (element: MyBean) => {
return (element.email !== undefined);
}
在页面加载时,它可以顺利执行。但是我想通过点击复选框来多次更改过滤条件。
我知道这个事实,如果输入值更改,就会执行纯过滤。
但是我不知道,在我的情况下应该更改哪个输入值才能强制进行过滤?当我在复选框的Onchange事件中添加以下函数时,没有任何过滤(items绑定到我的组件显示的数据)。
createFilterCondition = (searchCondition: string) => {
items.filter((element) => {
return this.doFilter(elem);
});
}
public doFilter= (element: MessagesBean) => {
return (element.email !== undefined);
}
感谢您的帮助。