Css 使用模板的素数树节点的条件样式
我很清楚如何同时设置所有节点的样式,但是如果节点是叶(节点有子节点)但没有父节点,或者节点有父节点但没有子节点,我需要添加一个样式。 这是我的密码Css 使用模板的素数树节点的条件样式,css,angular,primeng,tree-nodes,Css,Angular,Primeng,Tree Nodes,我很清楚如何同时设置所有节点的样式,但是如果节点是叶(节点有子节点)但没有父节点,或者节点有父节点但没有子节点,我需要添加一个样式。 这是我的密码 <p-tree [value]="nodes" layout="horizontal"> <ng-template let-node pTemplate="default"> <p>ADD CONTENT HERE</p> </ng-
<p-tree [value]="nodes" layout="horizontal">
<ng-template let-node pTemplate="default">
<p>ADD CONTENT HERE</p>
</ng-template>
</p-tree>
在此处添加内容
然后在样式表中使用.leaf style
和.no leaf style
类
更新:
它应该在以下方面发挥作用:
请参阅:感谢您的回复,但如上所述-在模板中添加样式不会更改所需的样式。我需要更改的样式是
ui-treenode
,它是在pTemplate=“default”
模板中呈现的。我想是这样的。请参阅stackblitz示例的更新答案。也许我没有理解正确?虽然我的问题可能不清楚,但是如果你检查一下你的演示,你会发现你的定制风格比我需要改变的风格要深刻得多。我用截图编辑了我的问题。
ngAfterViewInit(): void {
jQuery('.ui-tree-toggler').addClass('d-none');
jQuery('.ui-treenode-content').addClass('shadow');
jQuery('.ui-treenode-content').addClass('fp-tree-node');
this.nodes.forEach(node => {
this.setClasses(node);
});
}
setClasses(node: TreeNode) {
if(!node.children || node.children.length === 0) {
let thisNode = jQuery(`#${node.data.id}`);
let styleParent = thisNode.closest(".ui-treenode")
styleParent[0].classList.add("pl-0");
}
if(!node.data.parentId) {
let thisNode = jQuery(`#${node.data.id}`);
let styleParent = thisNode.closest(".ui-treenode")
styleParent[0].classList.add("pr-0");
}
if (node.children && node.children.length > 0) {
node.children.forEach(child => {
this.setClasses(child);
});
}
}
<p-tree [value]="nodes" layout="horizontal">
<ng-template let-node pTemplate="default">
<p
[class.leaf-style]="node.leaf"
[class.no-leaf-style]="!node.leaf"
>
ADD CONTENT HERE
</p>
</ng-template>
</p-tree>