Skip to content

Instantly share code, notes, and snippets.

@Stuff90
Last active April 30, 2018 10:55
Show Gist options
  • Save Stuff90/9cd4191d158d066ca62389fe65425384 to your computer and use it in GitHub Desktop.
Save Stuff90/9cd4191d158d066ca62389fe65425384 to your computer and use it in GitHub Desktop.
import { Subject } from 'rxjs/Subject';
import { takeUntil } from 'rxjs/operators';
import { Observable } from 'rxjs/Observable';
import { DataSource } from '@angular/cdk/collections';
export class ReactiveDataSource<T> extends DataSource<T> {
private _disconnector: Subject<void> = new Subject();
private _source: Observable<T[]>;
constructor(source: Observable<T[]>) {
super();
this._source = source;
}
connect(): Observable<T[]> {
return this._source.pipe(takeUntil(this._disconnector));
}
disconnect(): void {
this._disconnector.complete();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment