我需要保存 mat 树当前展开的节点,关闭所有节点,然后再次展开它们。 我的方法是这样的:
保存扩展模型
treeControl = new NestedTreeControl<NavbarNode>((node: NavbarNode) => return node.children);
this.prevExpansionModel = this.treeControl.expansionModel.selected;
this.treeControl.collapseAll();
然后应用它
this.prevExpansionModel.forEach(object => this.treeControl.expand(object));
当我这样做时,它可以工作,但是展开的节点将不再工作,并且我无法切换它们。 (已经展开的我无法切换,其他的我可以展开并正常工作)
最佳答案
创建一个先前的扩展模型变量,您将在其中保存扩展模型。
public prevExpansionModel: NavbarNode[] = [];
如果导航栏打开,保存扩展模型,关闭所有节点并关闭导航栏。 如果它打开,则打开 sidenav 并应用扩展模型。
private toggleMatTree() {
if (this.navbarStatus === NavbarStatus.OPEN) {
this.prevExpansionModel = this.treeControl.expansionModel.selected;
this.treeControl.collapseAll();
} else {
this.treeControl.collapseAll();
this.prevExpansionModel.forEach(object => this.treeControl.expand(object));
}
}
这是我打开侧导航的逻辑,也许会对你有所帮助。
public toggleSideNav() {
if (this.navbarStatus === NavbarStatus.OPEN) {
this.toggleMatTree();
this.navbarStatus = NavbarStatus.CLOSED;
} else {
this.toggleMatTree();
this.navbarStatus = NavbarStatus.OPEN;
}
return this.navbarStatus;
}
关于angular - 如何保存mat树展开模型并应用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67760475/