Skip to content

Commit 6c3edac

Browse files
fix: tree controlleddoc change detection issue
1 parent b436007 commit 6c3edac

1 file changed

Lines changed: 20 additions & 26 deletions

File tree

apps/showcase/doc/tree/controlleddoc.ts

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -37,24 +37,21 @@ export class ControlledDoc implements OnInit {
3737
}
3838

3939
expandAll() {
40-
this.files().forEach((node) => {
41-
this.expandRecursive(node, true);
42-
});
40+
const updatedFiles = this.files().map((node) => this.expandRecursive(node, true));
41+
this.files.set(updatedFiles);
4342
}
4443

4544
collapseAll() {
46-
this.files().forEach((node) => {
47-
this.expandRecursive(node, false);
48-
});
45+
const updatedFiles = this.files().map((node) => this.expandRecursive(node, false));
46+
this.files.set(updatedFiles);
4947
}
5048

51-
private expandRecursive(node: TreeNode, isExpand: boolean) {
52-
node.expanded = isExpand;
53-
if (node.children) {
54-
node.children.forEach((childNode) => {
55-
this.expandRecursive(childNode, isExpand);
56-
});
57-
}
49+
private expandRecursive(node: TreeNode, isExpand: boolean): TreeNode {
50+
return {
51+
...node,
52+
expanded: isExpand,
53+
children: node.children ? node.children.map((child) => this.expandRecursive(child, isExpand)) : node.children
54+
};
5855
}
5956

6057
code: Code = {
@@ -96,24 +93,21 @@ export class TreeControlledDemo implements OnInit {
9693
}
9794
9895
expandAll() {
99-
this.files().forEach((node) => {
100-
this.expandRecursive(node, true);
101-
});
96+
const updatedFiles = this.files().map((node) => this.expandRecursive(node, true));
97+
this.files.set(updatedFiles);
10298
}
10399
104100
collapseAll() {
105-
this.files().forEach((node) => {
106-
this.expandRecursive(node, false);
107-
});
101+
const updatedFiles = this.files().map((node) => this.expandRecursive(node, false));
102+
this.files.set(updatedFiles);
108103
}
109104
110-
private expandRecursive(node: TreeNode, isExpand: boolean) {
111-
node.expanded = isExpand;
112-
if (node.children) {
113-
node.children.forEach((childNode) => {
114-
this.expandRecursive(childNode, isExpand);
115-
});
116-
}
105+
private expandRecursive(node: TreeNode, isExpand: boolean): TreeNode {
106+
return {
107+
...node,
108+
expanded: isExpand,
109+
children: node.children ? node.children.map((child) => this.expandRecursive(child, isExpand)) : node.children
110+
};
117111
}
118112
119113
}`,

0 commit comments

Comments
 (0)