Я работаю с сеткой на стороне сервера, которая поддерживает простую фильтрацию текста. Когда я применяю фильтр, фильтр правильно передается источнику данных, но больше нигде не отображается.
Например: 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
вернет текущую модель фильтра после извлечения данных с сервера, а фильтры не смогут мгновенно очистить пользовательский интерфейс, как только они будут применены.