Команда ng generate @angular/material:material-table --name=data-table
генерирует метод connect()
, который выглядит следующим образом:
/**
* Connect this data source to the table. The table will only update when
* the returned stream emits new items.
* @returns A stream of the items to be rendered.
*/
connect(): Observable<DataTableItem[]> {
// Combine everything that affects the rendered data into one update
// stream for the data-table to consume.
const dataMutations = [
observableOf(this.data),
this.paginator.page,
this.sort.sortChange
];
return merge(...dataMutations).pipe(map(() => {
return this.getPagedData(this.getSortedData([...this.data]));
}));
}
Я не совсем уверен, что именно это делает, но оно переходит в this.data
при слиянии, а также getSortedData()
. Кажется, он выполняет одну и ту же работу дважды? Просто интересно, что делает реализация и есть ли более эффективный способ сделать это?
Например, может ли реализация connect не просто сначала:
- отсортировать массив
- нарезать результат сортировки, чтобы получить страницу
- Вернуть заметную страницу?
Неясно, какова цель слияния.