in docs-content/examples-source/material/tree/tree-dynamic/tree-dynamic-example.ts [99:129]
toggleNode(node: DynamicFlatNode, expand: boolean) {
const children = this._database.getChildren(node.item);
const index = this.data.indexOf(node);
if (!children || index < 0) {
// If no children, or cannot find the node, no op
return;
}
node.isLoading = true;
setTimeout(() => {
if (expand) {
const nodes = children.map(
name => new DynamicFlatNode(name, node.level + 1, this._database.isExpandable(name)),
);
this.data.splice(index + 1, 0, ...nodes);
} else {
let count = 0;
for (
let i = index + 1;
i < this.data.length && this.data[i].level > node.level;
i++, count++
) {}
this.data.splice(index + 1, count);
}
// notify the change
this.dataChange.next(this.data);
node.isLoading = false;
}, 1000);
}