Skip to content

Commit b7ff565

Browse files
committed
chore(table): update table data source in prep for rxjs6
1 parent c28549d commit b7ff565

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

src/lib/table/table-data-source.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@
88

99
import {DataSource} from '@angular/cdk/table';
1010
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
11-
import {MatPaginator} from '@angular/material/paginator';
12-
import {MatSort} from '@angular/material/sort';
11+
import {MatPaginator, PageEvent} from '@angular/material/paginator';
12+
import {MatSort, Sort} from '@angular/material/sort';
1313
import {Subscription} from 'rxjs/Subscription';
14-
import {combineLatest} from 'rxjs/operators/combineLatest';
14+
import {Observable} from 'rxjs/Observable';
1515
import {map} from 'rxjs/operators/map';
1616
import {startWith} from 'rxjs/operators/startWith';
17+
import {combineLatest} from 'rxjs/observable/combineLatest';
1718
import {empty} from 'rxjs/observable/empty';
1819
import {_isNumberValue} from '@angular/cdk/coercion';
1920

@@ -178,26 +179,25 @@ export class MatTableDataSource<T> extends DataSource<T> {
178179
_updateChangeSubscription() {
179180
// Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.
180181
// Otherwise, use an empty observable stream to take their place.
181-
const sortChange = this._sort ? this._sort.sortChange : empty();
182-
const pageChange = this._paginator ? this._paginator.page : empty();
182+
const sortChange: Observable<Sort> = this._sort ? this._sort.sortChange : empty();
183+
const pageChange: Observable<PageEvent> = this._paginator ? this._paginator.page : empty();
183184

184185
if (this._renderChangesSubscription) {
185186
this._renderChangesSubscription.unsubscribe();
186187
}
187188

189+
const dataStream = this._data;
188190
// Watch for base data or filter changes to provide a filtered set of data.
189-
this._renderChangesSubscription = this._data.pipe(
190-
combineLatest(this._filter),
191-
map(([data]) => this._filterData(data)),
192-
// Watch for filtered data or sort changes to provide an ordered set of data.
193-
combineLatest(sortChange.pipe(startWith(null!))),
194-
map(([data]) => this._orderData(data)),
195-
// Watch for ordered data or page changes to provide a paged set of data.
196-
combineLatest(pageChange.pipe(startWith(null!))),
197-
map(([data]) => this._pageData(data))
198-
)
191+
const filteredData = combineLatest(dataStream, this._filter)
192+
.pipe(map(([data]) => this._filterData(data)));
193+
// Watch for filtered data or sort changes to provide an ordered set of data.
194+
const orderedData = combineLatest(filteredData, sortChange.pipe(startWith(null!)))
195+
.pipe(map(([data]) => this._orderData(data)));
196+
// Watch for ordered data or page changes to provide a paged set of data.
197+
const paginatedData = combineLatest(orderedData, pageChange.pipe(startWith(null!)))
198+
.pipe(map(([data]) => this._pageData(data)));
199199
// Watched for paged data changes and send the result to the table to render.
200-
.subscribe(data => this._renderData.next(data));
200+
paginatedData.subscribe(data => this._renderData.next(data));
201201
}
202202

203203
/**
@@ -270,4 +270,4 @@ export class MatTableDataSource<T> extends DataSource<T> {
270270
* @docs-private
271271
*/
272272
disconnect() { }
273-
}
273+
}

0 commit comments

Comments
 (0)