@@ -19,6 +19,7 @@ import {BehaviorSubject} from 'rxjs/BehaviorSubject';
19
19
import 'rxjs/add/operator/let' ;
20
20
import 'rxjs/add/operator/debounceTime' ;
21
21
import 'rxjs/add/observable/combineLatest' ;
22
+ import { Subject } from 'rxjs/Subject' ;
22
23
23
24
/**
24
25
* Provides a handle for the table to grab the view container's ng-container to insert data rows.
@@ -72,7 +73,7 @@ export class CdkTable implements CollectionViewer {
72
73
new BehaviorSubject < { start : number , end : number } > ( { start : 0 , end : Number . MAX_VALUE } ) ;
73
74
74
75
/** Stream that emits when a row def has a change to its array of columns to render. */
75
- columnsChange = new Observable < void [ ] > ( ) ;
76
+ _columnsChange = new Observable < void > ( ) ;
76
77
77
78
/**
78
79
* Map of all the user's defined columns identified by name.
@@ -119,23 +120,24 @@ export class CdkTable implements CollectionViewer {
119
120
120
121
// Get and merge the streams for column changes made to the row defs
121
122
const rowDefs = [ ...this . _rowDefinitions . toArray ( ) , this . _headerDefinition ] ;
122
- const columnChangeStreams = rowDefs . map ( ( rowDef : BaseRowDef ) => rowDef . columnsChange ) ;
123
- this . columnsChange = Observable . combineLatest ( columnChangeStreams ) ;
123
+ const columnChangeStreams =
124
+ rowDefs . map ( ( rowDef : BaseRowDef ) => rowDef . columnsChange ) ;
125
+ this . _columnsChange = Observable . merge ( ...columnChangeStreams ) ;
124
126
}
125
127
126
128
ngAfterViewInit ( ) {
127
129
this . renderHeaderRow ( ) ;
128
130
129
131
// Re-render the header row if the columns changed.
130
- this . columnsChange . subscribe ( ( ) => {
132
+ this . _columnsChange . subscribe ( ( ) => {
131
133
this . _headerRowPlaceholder . viewContainer . clear ( ) ;
132
134
this . renderHeaderRow ( ) ;
133
135
} ) ;
134
136
135
137
// TODO(andrewseguin): If the data source is not
136
138
// present after view init, connect it when it is defined.
137
139
// TODO(andrewseguin): Unsubscribe from this on destroy.
138
- const renderChange = [ this . dataSource . connect ( this ) , this . columnsChange ] ;
140
+ const renderChange = [ this . dataSource . connect ( this ) , this . _columnsChange ] ;
139
141
Observable . combineLatest ( renderChange ) . subscribe ( ( [ data ] ) => {
140
142
// TODO(andrewseguin): Add a differ that will check if the data has changed,
141
143
// rather than re-rendering all rows
0 commit comments