在mat表中使用ConnectableObservable而不是DataSource

时间:2017-10-18 09:04:07

标签: angular rxjs angular-material

根据我的理解,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 /小提琴的链接/我会很乐意提供一个例子

1 个答案:

答案 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; }
.
.
.