为什么在此自定义过滤器中未调用`doesFilterPass`

时间:2019-12-11 12:40:46

标签: ag-grid-react

据我了解,当调用filterChangedCallback时,网格将过滤当前数据,并同时调用doesFilterPassisFilterActive

这里有使用自定义过滤器和浮动过滤器的列。浮动过滤器(一个复选框)显示为正常,当我单击它时,将调用自定义过滤器中的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}
      />
    );
  }

}

0 个答案:

没有答案