Angular 在自定义树视图中取消选中子节点复选框时,如何取消选中所有父节点

Angular 在自定义树视图中取消选中子节点复选框时,如何取消选中所有父节点,angular,typescript,components,custom-component,angular-tree-component,Angular,Typescript,Components,Custom Component,Angular Tree Component,我已经创建了一个带有复选框的自定义树视图。现在,当我取消选中相应的子节点时,我需要取消选中相应的父级节点 例如:在我的情况下,让我们选中所有复选框,然后如果我取消选中名为“fifth-b”的节点,那么所有属于父节点的节点,例如“fourth”、“third-b”、“second-a”、“first”复选框都需要自动取消选中 我想开发一个完全自定义的树视图与复选框和可折叠,因此没有其他插件或材料的设计,我们可以使用 请在- 非常感谢您的帮助。您可以尝试迭代整个树以查找节点,例如,您可以编写如下

我已经创建了一个带有复选框的自定义树视图。现在,当我取消选中相应的子节点时,我需要取消选中相应的父级节点

例如:在我的情况下,让我们选中所有复选框,然后如果我取消选中名为“fifth-b”的节点,那么所有属于父节点的节点,例如“fourth”、“third-b”、“second-a”、“first”复选框都需要自动取消选中

我想开发一个完全自定义的树视图与复选框和可折叠,因此没有其他插件或材料的设计,我们可以使用

请在-


非常感谢您的帮助。

您可以尝试迭代整个树以查找节点,例如,您可以编写如下函数:

  public unselectParents(searchNode: TreeNode, searchPivot: TreeNode): boolean {
    if (searchPivot === searchNode) return true;
    else if (searchPivot.children.length !== 0) {
      for (let i = 0; i < searchPivot.children.length; i++) {
        let value = this.unselectParents(searchNode, searchPivot.children[i]);
        if (value === true) {
          searchPivot.check = false;
          return true;
        }
      }
    }
    return false;
  }
或者,您也可以在“TreeNode”接口中具有属性“parent:TreeNode”

  public selectNode(node: TreeNode, value: boolean): void {
    this.check(node, value);
    if (value == false) {
      this.unselectParents(node, this.data.root);
    }
  }