PrimeNG TreeTable异步加载子树[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。
1. PrimeNG官网:https://www.primefaces.org/primeng/#/treetable
2. 引入TreeTableModule到自己的module.ts中
3. 页面中写上PrimeNG规定的p-treeTable格式,value对应后台返回的treeNode格式,field中对应的是data:item中返回的值 的名称
< p -treeTable [ value ]= “_organizationalManagementList“ selectionMode = “single” [( selection )]= “selectedFile”
( onNodeSelect )= “_OrganizationalSelectHandler($event)” ( onNodeExpand )= “_expandOrganizational($event)” >
< p -header >Singe Selection </ p -header >
< p-column field= “descn” header= “部门名称” [ style]= “{‘width’:’200px’}” ></ p-column >
< p-column field= “id” header= “” ></ p-column >
< p-column field= “jobGroupId” header= “部门编号” ></ p-column >
< p-column field= “jobGroupId” header= “部门简称” ></ p-column >
< p-column field= “jobGroupId” header= “部门性质” ></ p-column >
< p-column field= “jobGroupId” header= “负责人” ></ p-column >
< p-column field= “jobGroupId” header= “电话号” ></ p-column >
< p-column field= “jobGroupId” header= “分机号” ></ p-column >
< p-column field= “jobGroupId” header= “备注” ></ p-column >
</ p -treeTable >
4. 首次请求后台得到第一次树形节点数据
this. unitService. getAllOrganizational()
. subscribe(
( profile: any[]) => {
console. log( profile);
this . _organizationalManagementList = profile . map ( item => {
return {
label: item[ “descn”],
data: item,
expandedIcon: “fa-folder-open”,
collapsedIcon: “fa-folder”,
leaf: false
};
});
});
5. 第二次展开,会触发 onNodeExpand方法,执行中根据$event中的id值进行第二次请求
_expandOrganizational( event){
console. log( event);
if ( event. node) {
this. unitService. getAllOrganizationalById( event. node[ “data”]. id). subscribe(
( res: any[]) => {
const childrenList= res[ “privileges”];
event.node.children = childrenList . map ( item => {
return {
label: item[ “text”],
data: item,
expandedIcon: “fa-folder-open”,
collapsedIcon: “fa-folder”,
leaf: false
};
});
// console.log(event.node);
},
( err: HttpErrorResponse) => {
if ( err. error instanceof Error) {
alert( `客户端错误or网络连接失败, ${ err. error. message } `);
} else {
const errMsg = `服务器返回数据失败,错误代码: ${
err. status
} ,错误信息: ${ err. error } `;
console. log( errMsg);
alert( errMsg);
}
}
);
}
}
6. 再展开之前还需要判断是否已经是最后一层,如果是的话是文件形式的图标,如果不是的话是文件夹形式,后续会再更新
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141863.html原文链接:https://javaforall.cn
相关文章
- ajax发送异步请求四个步骤,AJAX的异步请求的四个步骤[通俗易懂]
- Spring Boot 中的异步调用[通俗易懂]
- java 异步调用接口_Java接口异步调用[通俗易懂]
- 前端异步(async)解决方案(所有方案)[通俗易懂]
- 关于异步FIFO设计,这7点你必须要搞清楚「建议收藏」
- 【说站】js中异步是什么意思
- 前端实现异步的几种方式_redux是什么
- 强大的nginx反向代理异步传输模式(原理)[通俗易懂]
- ATM(异步传输模式)是什么?
- 并发和并行、线程和进程,异步和同步之间到底是什么关系?
- 80%的前端开发都答不上来的js异步面试题_2023-03-13
- Linux线程:实现异步处理的高效方案(linux线程异步)
- 备份Linux文件的异步备份技术(linux文件异步)
- Linux之异步通信:超越常规的沟通新体验(linux异步通信)
- 秒速响应Redis请求驱动的异步网络技术(redis请求回复)
- C#委托的三种调用示例(同步调用异步调用异步回调)
- PHPcurl抓取AJAX异步内容示例