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);
}
}