Пытаюсь использовать combineLatest
с угловым материалом Table
. Попытка объединить MatPaginator
и MatSort
не работает.
Вот пример, которому я следую. Я смотрю на пример «Таблица, извлекающая данные через HTTP».
Вот что я пытаюсь сделать:
@ViewChild(MatPaginator) private _paginator: MatPaginator;
@ViewChild(MatSort) private _sort: MatSort;
public ngOnInit(): void {
this._sort.sortChange.subscribe(
() => {
console.log("this works");
}
);
combineLatest(
this._sort.sortChange,
this._paginator.page
).pipe(
startWith({}),
switchMap(
() => {
return this._userService.getAll();
}
),
tap(
(users: IUser[]) => {
this._data = users;
}
)
).subscribe();
}
Проблема с приведенным выше кодом заключается в том, что наблюдаемый объект combineLatest
запускается только один раз при загрузке компонента. Я ожидаю, что он будет срабатывать каждый раз, когда запускается сортировка или разбиение на страницы. Когда я подписываюсь прямо на sortChange
, он срабатывает каждый раз, когда я меняю сортировку.
Приведенный выше код будет работать, когда я изменю combineLatest
на merge
. Он будет работать так, как ожидалось. Но мне нужно объединять последние результаты как сортировщика, так и пагинатора каждый раз, когда какой-либо из них изменяется. Но он никогда не сработает с combineLatest
. Что здесь происходит?