命令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的实现: -对数组排序 -切片排序结果以获取页面 -返回可观察页面?
目前尚不清楚合并的目的是什么。
答案 0 :(得分:1)
当合并中的三个可观察对象中的任何一个发出时,合并即发出,map函数将忽略合并所发出的任何值,因此,编写此合并符的人仅使用它创建了一个在分页器或排序更改时触发的事件发射器。没有observableOf(this.data),它将不会发出第一个值,但是看到它会忽略observableOf
/ of
可能包含的任何参数,或者它们可能使用了startsWith。