@@ -12,9 +12,9 @@ import {MatPaginator, PageEvent} from '@angular/material/paginator';
12
12
import { MatSort , Sort } from '@angular/material/sort' ;
13
13
import { Observable } from 'rxjs/Observable' ;
14
14
import { Subscription } from 'rxjs/Subscription' ;
15
- import { combineLatest } from 'rxjs/operators/combineLatest' ;
16
15
import { map } from 'rxjs/operators/map' ;
17
16
import { startWith } from 'rxjs/operators/startWith' ;
17
+ import { combineLatest } from 'rxjs/observable/combineLatest' ;
18
18
import { empty } from 'rxjs/observable/empty' ;
19
19
import { _isNumberValue } from '@angular/cdk/coercion' ;
20
20
@@ -186,19 +186,18 @@ export class MatTableDataSource<T> extends DataSource<T> {
186
186
this . _renderChangesSubscription . unsubscribe ( ) ;
187
187
}
188
188
189
+ const dataStream = this . _data ;
189
190
// Watch for base data or filter changes to provide a filtered set of data.
190
- this . _renderChangesSubscription = this . _data . pipe (
191
- combineLatest ( this . _filter ) ,
192
- map ( ( [ data ] ) => this . _filterData ( data ) ) ,
193
- // Watch for filtered data or sort changes to provide an ordered set of data.
194
- combineLatest ( sortChange . pipe ( startWith ( null ! ) ) ) ,
195
- map ( ( [ data ] ) => this . _orderData ( data ) ) ,
196
- // Watch for ordered data or page changes to provide a paged set of data.
197
- combineLatest ( pageChange . pipe ( startWith ( null ! ) ) ) ,
198
- map ( ( [ data ] ) => this . _pageData ( data ) )
199
- )
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 ) ) ) ;
200
199
// Watched for paged data changes and send the result to the table to render.
201
- . subscribe ( data => this . _renderData . next ( data ) ) ;
200
+ paginatedData . subscribe ( data => this . _renderData . next ( data ) ) ;
202
201
}
203
202
204
203
/**
@@ -271,4 +270,4 @@ export class MatTableDataSource<T> extends DataSource<T> {
271
270
* @docs -private
272
271
*/
273
272
disconnect ( ) { }
274
- }
273
+ }
0 commit comments