为什么在此自定义过滤器中没有调用“doesFilterPass”

And*_*ndy 6 ag-grid-react

据我了解,当filterChangedCallback被调用时,网格会过滤当前数据并调用doesFilterPass,并isFilterActive这样做。

这里我有一个使用自定义过滤器和浮动过滤器的列。浮动过滤器(一个复选框)显示正常,当我onFloatingFilterChanged在调用自定义过滤器中单击它时,会出现绿色过滤器活动图标,网格会刷新,但doesFilterPass根本不会被调用,我无法弄清楚为什么。

有一些基本的东西我没有通过自定义过滤器得到,所以如果有人能阐明这一点,我将不胜感激。

(编辑:这可能是有问题的自定义/浮动过滤器之间的相互作用。去年在 github 上发布了类似的 ag-grid-angular 问题,但没有任何结果。所以也许这是一个错误?)

定制过滤器

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);
  }

}
Run Code Online (Sandbox Code Playgroud)

浮动过滤器

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}
      />
    );
  }

}
Run Code Online (Sandbox Code Playgroud)