根据我的理解,mat table dataSource是一个围绕Observable的瘦包装器,它的界面看起来很像ConnectableObservable。
经过一番挖掘后,我意识到rxjs / ConnectableObservable的connect方法返回Disposable或更可能 Subscription取决于您信任的来源。How to use material2 data table这与材料中预期的API不完全匹配。
在材料网站上给出的示例确实声明了一些不明原因的额外类,但是感觉像常规的ConnectableObservable在这里工作得很好。
有没有办法让材质表接受一个ConnectableObservable作为dataSource,还是有充分的理由我应该扩展cdk / DataSource抽象类?
这是两个温和相关的SO:
ps 如果你有一个工作的plunker /小提琴的链接/我会很乐意提供一个例子
答案 0 :(得分:0)
这是md表的源代码,声明它期望connect返回一个behaviorSubject https://github.com/angular/material2/blob/master/src/lib/table/table-data-source.ts
export class MatTableDataSource<T> implements DataSource<T> {
/** Stream emitting render data to the table (depends on ordered data
changes). */
private _renderData = new BehaviorSubject<T[]>([]);
/**
* Used by the MatTable. Called when it connects to the data source.
* @docs-private
*/
connect() { return this._renderData; }
.
.
.