在mat表中使用ConnectableObservable而不是DataSource

在mat表中使用ConnectableObservable而不是DataSource

问题描述:

从我所了解的表中可以看出,表dataSource是一个Observable的薄包装,其接口看起来很像ConnectableObservable在mat表中使用ConnectableObservable而不是DataSource

后有点挖我的意识到rxjs/ConnectableObservable的连接方法将返回Disposable或更可能 一个Subscription根据自己信任的来源。这与材料中预期的API不太匹配。

在材料网站上给出的例子确实为一些不明确的原因声明了额外的类,但是它感觉像一个常规的ConnectableObservable在这里应该工作得很好。

有没有一种方法,使材料表接受ConnectableObservable作为数据源,还是有我为什么要延长CDK/DataSource的抽象类,一个很好的理由?

这里有两个轻度SO相关:

PS,如果你有一个链接到工作plunker /小提琴/无论我会很高兴提供示例

+1

从您提供的数据源示例代码的样子,我觉得它预计它会返回一个可观察的部分认购数据的连接方法。我猜在内部它的数据就像this.datasource.connect()。subscribe((res)=> this.row = res)。 ConnectableObservable connect方法做了完全不同的事情,所以我认为你不能用它取代正式的抽象实现。 –

+1

@FanCheung是正确的,数据源不在身边ConnectableObservable瘦包装,它是一个完全不同的抽象,恰好也有一个名为方法'连接()' – Pace

+0

@FanCheung为什么不写一个答案,所以我可以关闭吗?我无法接受评论 – Renaud

这是md表的源代码,声明它期望连接到返回N A 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; } 
. 
. 
.