angular - 如何保存mat树展开模型并应用?

标签 angular angular-material

我需要保存 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/

相关文章:

angular - 拦截来自 Angular2 的所有 HTTP 请求

javascript - Angular Material mdToast 导致 AngularJS 无限 $digest 循环

javascript - md-select 不更新模型

javascript - Angular Material Design 中的事件日历

angular - 在组件的构造函数中分派(dispatch)操作时不会调用 ngrx 效果

angular - 取消订阅 Observable 的 promise

typescript - 如何为 Ionic 2 中的所有请求设置默认 Http header?

angular - 在 Angular 的工厂提供者中注入(inject) @ngrx store 作为依赖项

angular - 关闭后如何订阅angularMaterial Dialog?

javascript - 使用 formArray 时出现 Mat-AutoComplete 错误