Skip to content

Commit 46571a5

Browse files
committed
cache parent level instead of traversing DOM on ever level get
1 parent d237e90 commit 46571a5

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/cdk/tree/tree.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,8 @@ export class CdkTreeNode<T> implements FocusableOption, OnDestroy, AfterViewInit
317317
/** Emits when the node's data has changed. */
318318
_dataChanges = new Subject<void>();
319319

320+
private _parentNodeAriaLevel: number;
321+
320322
/** The tree node's data. */
321323
get data(): T { return this._data; }
322324
set data(value: T) {
@@ -336,7 +338,7 @@ export class CdkTreeNode<T> implements FocusableOption, OnDestroy, AfterViewInit
336338
// Retrieve the aria-level of the parent node because level from treeControl is 0 indexed and
337339
// aria-level is 1 indexed
338340
return this._tree.treeControl.getLevel ?
339-
this._tree.treeControl.getLevel(this._data) : this._parentNodeAriaLevel();
341+
this._tree.treeControl.getLevel(this._data) : this._parentNodeAriaLevel;
340342
}
341343

342344
/**
@@ -351,6 +353,7 @@ export class CdkTreeNode<T> implements FocusableOption, OnDestroy, AfterViewInit
351353
}
352354

353355
ngAfterViewInit(): void {
356+
this._parentNodeAriaLevel = this._getParentNodeAriaLevel();
354357
this._elementRef.nativeElement.setAttribute('aria-level', String(this.level + 1));
355358
}
356359

@@ -379,7 +382,7 @@ export class CdkTreeNode<T> implements FocusableOption, OnDestroy, AfterViewInit
379382
this.role = 'treeitem';
380383
}
381384

382-
private _parentNodeAriaLevel(): number {
385+
private _getParentNodeAriaLevel(): number {
383386
let parent = this._elementRef.nativeElement.parentElement;
384387
while (parent &&
385388
!(parent.classList.contains('cdk-nested-tree-node') || parent.classList.contains('cdk-tree'))) {

0 commit comments

Comments
 (0)