据我了解,当调用filterChangedCallback
时,网格将过滤当前数据,并同时调用doesFilterPass
和isFilterActive
。
这里有使用自定义过滤器和浮动过滤器的列。浮动过滤器(一个复选框)显示为正常,当我单击它时,将调用自定义过滤器中的onFloatingFilterChanged
,绿色的过滤器活动图标出现,并且网格刷新,但是doesFilterPass
没有得到完全打了电话,我不知道为什么。
自定义过滤器无法满足我的一些基本需求,所以如果有人可以对此有所了解,我将不胜感激。
(编辑:可能是有问题的自定义/浮动过滤器之间的相互作用。存在类似的ag-grid-angular问题posted to github last year,但没有任何结果。那么也许是个错误吗?)< / p>
export default class BooleanFilter {
init(params) {
this.params = params;
this.valueGetter = params.valueGetter;
this.filterChangedCallback = params.filterChangedCallback;
this.status = false;
}
onFloatingFilterChanged(status) {
this.status = status;
this.filterChangedCallback();
}
getGui() {
return '<div />';
}
getModel() {
return this.isFilterActive() ? { filterType: 'boolean', filter: this.status } : undefined;
}
setModel(model) {
this.state.status = model ? model.value : '';
}
isFilterActive() {
return this.status === true;
}
doesFilterPass(params) {
console.log(this.status, params);
}
}
export default class FloatingCheckboxFilter extends Component {
state = { status: false };
handleToggle = (e) => {
const { target: { checked } } = e;
const { parentFilterInstance } = this.props;
this.setState({ status: checked });
parentFilterInstance((instance) => {
instance.onFloatingFilterChanged(checked);
});
}
onParentModelChanged = (parentModel) => {
this.setState({
status: !parentModel ? false : parentModel.filter
});
}
render() {
const { status } = this.state;
return (
<input
style={{ marginTop: '0.75em' }}
type="checkbox"
checked={status}
onChange={this.handleToggle}
/>
);
}
}