我在我的angular2 +应用程序中实现了ag网格,过滤器对我来说很好用,但是对于某些字段,我需要自定义过滤器,因为这些字段不是例如主数组中的直接字段
abc = [
xyz_field,
inner_parent_array: [{inner_field: 60}]
]
我想过滤称为inner_field的字段,但不能使用自定义过滤器
这是来自floatfiltercomponent的代码
private params: IFilterParams;
private valueGetter: (rowNode: RowNode) => any;
public text: string = '';
@ViewChild('input', {read: ViewContainerRef}) public input;
agInit(params: IFilterParams): void {
this.params = params;
this.valueGetter = params.valueGetter;
console.log(this.params);
}
isFilterActive(): boolean {
return this.text !== null && this.text !== undefined && this.text !== '';
}
doesFilterPass(params: IDoesFilterPassParams): boolean {
console.log(params.node);
return this.text.toLowerCase()
.split(" ")
.every((filterWord) => {
return this.valueGetter(params.node).toString().toLowerCase().indexOf(filterWord) >= 0;
});
}
getModel(): any {
return {value: this.text};
}
setModel(model: any): void {
this.text = model ? model.value : '';
}
ngAfterViewInit(params: IAfterGuiAttachedParams): void {
setTimeout(() => {
this.input.element.nativeElement.focus();
})
}
onChange(newValue): void {
if (this.text !== newValue) {
this.text = newValue;
console.log(this.params);
this.params.filterChangedCallback();
}
}
但是它给出了错误,this.params.filterChangedCallback不是一个函数,我不确定如何解决这个问题
过滤器对于xyz_field可以正常工作,但对于inner_field则不能
这是我想做的实时示例
https://plnkr.co/edit/euuPnjpQ2IwtbKRYTXIv?p=preview
答案 0 :(得分:0)
AG-Grid支持可以帮助我找到这个, 在列定义中使用valueFormatter的valueGetter insead