Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何更新mat树以处理将子节点添加到叶节点(将叶节点转换为父节点)_Angular_Angular Material_Angular Material2_Angular Material 5_Angular Cdk - Fatal编程技术网

Angular 如何更新mat树以处理将子节点添加到叶节点(将叶节点转换为父节点)

Angular 如何更新mat树以处理将子节点添加到叶节点(将叶节点转换为父节点),angular,angular-material,angular-material2,angular-material-5,angular-cdk,Angular,Angular Material,Angular Material2,Angular Material 5,Angular Cdk,我正在使用复选框 在中,我们只能向父节点添加新的子节点。 如果我想将一个新的子对象添加到 我通过在insertItem和addNewItem函数中添加几行来解决这个问题 addNewItem(节点:TodoItemFlatNode){ const parentNode=this.flatNodeMap.get(节点); /***此块将用于确定是否应展开子树。**/ 设isParentHasChildren:boolean=false; if(parentNode.children) isPare

我正在使用复选框

在中,我们只能向父节点添加新的子节点。
如果我想将一个新的子对象添加到

我通过在insertItem和addNewItem函数中添加几行来解决这个问题

addNewItem(节点:TodoItemFlatNode){
const parentNode=this.flatNodeMap.get(节点);
/***此块将用于确定是否应展开子树。**/
设isParentHasChildren:boolean=false;
if(parentNode.children)
isParentHasChildren=真;
/**街区尽头**/
this.database.insertItem(parentNode!,“”);
//仅当父节点具有子节点(父节点不是叶节点)时才展开子树
if(isParentHasChildren)
this.treeControl.expand(节点);
}
插入项(父项:TodoItemNode,名称:string){
const child={item:name};
如果(parent.children){//parent已经有子项
父。子。推(子);
this.dataChange.next(this.data);
}
else{//如果父节点是叶节点
parent.children=[];
父。子。推(子);
this.dataChange.next(this.data);
}
}

如果立即向刚创建的子节点添加子节点,您知道如何使新的子节点可扩展吗。帮助我向叶节点添加新项目时,它会折叠新节点。知道怎么解决吗?
     addNewItem(node: TodoItemFlatNode) {
        const parentNode = this.flatNodeMap.get(node);
        /*** this block will be used to determine wither we should expand the subtree or not.      **/ 
        let isParentHasChildren: boolean = false;
        if (parentNode.children)
          isParentHasChildren = true;
        /** end of the block **/
        this.database.insertItem(parentNode!, '');
        // expand the subtree only if the parent has children (parent is not a leaf node)
        if (isParentHasChildren)
          this.treeControl.expand(node);
      }

      insertItem(parent: TodoItemNode, name: string) {
        const child = <TodoItemNode>{ item: name };
        if (parent.children) { // parent already has children
          parent.children.push(child);
          this.dataChange.next(this.data);
        }
        else { // if parent is a leaf node
          parent.children = [];
          parent.children.push(child);
          this.dataChange.next(this.data);
        }
      }