Почему filterModel очищается после каждого изменения фильтра в модели рядов на стороне сервера? - PullRequest
0 голосов
/ 21 июня 2019

Я работаю с сеткой на стороне сервера, которая поддерживает простую фильтрацию текста. Когда я применяю фильтр, фильтр правильно передается источнику данных, но больше нигде не отображается.

Например: gridApi.getFilterModel() всегда пуст, сетка не отображает визуально, что фильтр был применен, любые новые фильтры будут полностью перекрывать существующие, текущие значения фильтра не отображаются в диалоговом окне фильтра после того, как фильтр применяется и т. д. и т. д.

Я пытался создать свою собственную кэшированную filterModel, наблюдаемую для сохранения состояния, но это создает проблемы при попытке очистить фильтры и не решает пользовательский интерфейс, не отображающий, какие фильтры активны.

Попытка установить модель фильтра из метода getRows создает бесконечный цикл.

Вот мой источник данных getRows, здесь ничего особенного не происходит, но это единственное место в приложении, где filterModel когда-либо имеет значимое значение.

 getRows = (params: IServerSideGetRowsParams) => {
    const { endRow, startRow, sortModel, filterModel } = params.request;
    const { colId: sortBy, sort: sortDirection } = sortModel[0] || ({} as any);

    this.apiService
      .listValues({
        startRow,
        endRow,
        sortDirection,
        sortBy,
        ...transformFilterModel(filterModel)
      })
      .toPromise()
      .then(response => {
        params.successCallback(response.data, 100);
      })
      .catch(error => params.failCallback());
  };

Учитывая, что он угловой и все распределено по файлам, я рад предоставить любой дополнительный код, который поможет, но я начну с getRows.

Я бы ожидал, что getFilterModel вернет текущую модель фильтра после извлечения данных с сервера, а фильтры не смогут мгновенно очистить пользовательский интерфейс, как только они будут применены.

...