Добрый вечер
Нужно загрузить с сервера значения с пагинацией и фильтрацией, использую для этого combineLatest, выглядит сейчас это так:
this.page$ = combineLatest([this.findModel$, this.queryParams$]).pipe(
debounceTime(300),
map(([findModel, params]) => {
const { pageSize, pageIndex, sort, filter } = params;
const currentSort = sort.find(item => item.value !== null);
const sortField = (currentSort && currentSort.key) || null;
const sortOrder = (currentSort && currentSort.value) || null;
const desc = (sortOrder && sortOrder == 'descend') || false;
return {
dictionaryId: null,
dictionaryName: findModel.dictionaryName,
id: null,
parentId: null,
useParent: findModel.useParent,
value: null,
pageIndex: pageIndex - 1,
pageSize: pageSize,
orderBy: sortField,
orderDescending: desc
}
}),
switchMap(query => this._dictionaryService.findValues(query)),
);
Дальше подписываюсь на page$ и данные отображаются в таблице.
Но есть проблема, combineLatest отрабатывает только после того, как будут внесены изменения в один из входящих объектов. Если после подписи на page$ вызывать findModel$.next(...) - отрабатывает вызов к серверу несколько раз и каждый вызов pageIndex уменьшается на единицу. В первый раз pageIndex 0, а после него идет вызов с pageIndex -1 и естественно летит ошибка. Не могу понять что делаю не так(((