Skip to content

Commit b678af4

Browse files
committed
address some comments
1 parent 27802dc commit b678af4

File tree

3 files changed

+28
-18
lines changed

3 files changed

+28
-18
lines changed

src/cdk/collections/data-source.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88

99
import {Observable} from 'rxjs/Observable';
10-
import {of} from 'rxjs/observable/of';
10+
import {of as observableOf} from 'rxjs/observable/of';
1111
import {CollectionViewer} from './collection-viewer';
1212

1313

@@ -38,7 +38,7 @@ export class ArrayDataSource<T> implements DataSource<T> {
3838
constructor(private _data: T[]) {}
3939

4040
connect(): Observable<T[]> {
41-
return of(this._data);
41+
return observableOf(this._data);
4242
}
4343

4444
disconnect() {}

src/cdk/scrolling/for-of.ts

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,11 @@ export class CdkForOf<T> implements CollectionViewer, DoCheck, OnDestroy {
172172
ngDoCheck() {
173173
if (this._differ && this._needsUpdate) {
174174
const changes = this._differ.diff(this._renderedItems);
175-
this._applyChanges(changes);
175+
if (!changes) {
176+
this._updateContext();
177+
} else {
178+
this._applyChanges(changes);
179+
}
176180
this._needsUpdate = false;
177181
}
178182
}
@@ -208,19 +212,18 @@ export class CdkForOf<T> implements CollectionViewer, DoCheck, OnDestroy {
208212
return newDs.connect(this);
209213
}
210214

211-
/** Apply changes to the DOM. */
212-
private _applyChanges(changes: IterableChanges<T> | null) {
213-
// If there are no changes, just update the index and count on the view context and be done.
214-
if (!changes) {
215-
for (let i = 0, len = this._viewContainerRef.length; i < len; i++) {
216-
let view = this._viewContainerRef.get(i) as EmbeddedViewRef<CdkForOfContext<T>>;
217-
view.context.index = this._renderedRange.start + i;
218-
view.context.count = this._data.length;
219-
view.detectChanges();
220-
}
221-
return;
215+
/** Update the `CdkForOfContext` for all views. */
216+
private _updateContext() {
217+
for (let i = 0, len = this._viewContainerRef.length; i < len; i++) {
218+
let view = this._viewContainerRef.get(i) as EmbeddedViewRef<CdkForOfContext<T>>;
219+
view.context.index = this._renderedRange.start + i;
220+
view.context.count = this._data.length;
221+
view.detectChanges();
222222
}
223+
}
223224

225+
/** Apply changes to the DOM. */
226+
private _applyChanges(changes: IterableChanges<T>) {
224227
// Detach all of the views and add them into an array to preserve their original order.
225228
const previousViews: EmbeddedViewRef<CdkForOfContext<T>>[] = [];
226229
for (let i = 0, len = this._viewContainerRef.length; i < len; i++) {
@@ -255,6 +258,11 @@ export class CdkForOf<T> implements CollectionViewer, DoCheck, OnDestroy {
255258
}
256259

257260
// We now have a full list of everything to be inserted, so go ahead and insert them.
261+
this._insertViews(insertTuples);
262+
}
263+
264+
/** Insert the RecordViewTuples into the container element. */
265+
private _insertViews(insertTuples: RecordViewTuple<T>[]) {
258266
for (let i = 0, len = insertTuples.length; i < len; i++) {
259267
let {view, record} = insertTuples[i];
260268
if (view) {

src/cdk/scrolling/virtual-scroll-viewport.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ export class CdkVirtualScrollViewport implements OnInit, DoCheck, OnDestroy {
7878
private _renderedRange: Range = {start: 0, end: 0};
7979

8080
/** The offset of the rendered portion of the data from the start. */
81-
get renderedContentOffset() { return this._renderedContentOffset; }
82-
set renderedContentOffset(offset) {
81+
get renderedContentOffset(): number { return this._renderedContentOffset; }
82+
set renderedContentOffset(offset: number) {
8383
if (this._renderedContentOffset != offset) {
8484
this._ngZone.run(() => {
8585
this._renderedContentOffset = offset;
@@ -148,8 +148,10 @@ export class CdkVirtualScrollViewport implements OnInit, DoCheck, OnDestroy {
148148
Promise.resolve().then(() => {
149149
this._viewportSize = this.orientation === 'horizontal' ?
150150
this.elementRef.nativeElement.clientWidth : this.elementRef.nativeElement.clientHeight;
151-
fromEvent(this.elementRef.nativeElement, 'scroll').subscribe(() => {
152-
this._markScrolled();
151+
this._ngZone.runOutsideAngular(() => {
152+
fromEvent(this.elementRef.nativeElement, 'scroll').subscribe(() => {
153+
this._markScrolled();
154+
});
153155
});
154156
this._scrollStrategy.init(this);
155157
this._scrollStrategyInited = true;

0 commit comments

Comments
 (0)