From 0fbbe45a21c9ebebb7938cb831eeecdecc7161cb Mon Sep 17 00:00:00 2001 From: Stas Maxymov Date: Wed, 2 May 2018 18:37:27 +0300 Subject: [PATCH] fix(tree) make change detection less often The CdkTree component calls change detection after each node insert, which has impact on performance. The fix is to call change detection only once, when a set of nodes is rendered. Related bug: angular/material2#11101 --- src/cdk/tree/tree.spec.ts | 2 ++ src/cdk/tree/tree.ts | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/cdk/tree/tree.spec.ts b/src/cdk/tree/tree.spec.ts index d76b9e622cf8..c7d6b17db38f 100644 --- a/src/cdk/tree/tree.spec.ts +++ b/src/cdk/tree/tree.spec.ts @@ -607,6 +607,8 @@ describe('CdkTree', () => { flush(); } catch { flush(); + } finally { + flush(); } }).toThrowError(getTreeControlFunctionsMissingError().message); })); diff --git a/src/cdk/tree/tree.ts b/src/cdk/tree/tree.ts index dce98c43ee79..5f539db340d2 100644 --- a/src/cdk/tree/tree.ts +++ b/src/cdk/tree/tree.ts @@ -287,6 +287,8 @@ export class CdkTree implements CollectionViewer, OnInit, OnDestroy { viewContainer.move(view!, currentIndex); } }); + + this._changeDetectorRef.detectChanges(); } /** @@ -336,7 +338,5 @@ export class CdkTree implements CollectionViewer, OnInit, OnDestroy { if (CdkTreeNode.mostRecentTreeNode) { CdkTreeNode.mostRecentTreeNode.data = nodeData; } - - this._changeDetectorRef.detectChanges(); } }