gpt4 book ai didi

angular - 清晰设计 TreeView 递归问题

转载 作者:太空狗 更新时间:2023-10-29 17:49:52 24 4
gpt4 key购买 nike

我已经开始使用 Clarity Design Angular 项目并遇到了 0.10.0-alpha 中提供的 TreeView 递归模板的问题。

https://plnkr.co/edit/KK8rVH1xUGCO7VetgomA?p=preview

    selectableRoot = {
"@name": "A1",
"selected": false,
"expanded": true,
"children": [
{
"@name": "B1",
"selected": false,
"children": [
{ "@name": "C1" },
{ "@name": "C2" },
{ "@name": "C3" }
]
},
{
"@name": "B2",
"selected": true,
"expanded": true,
"children": [
{ "@name": "D1" },
{
"@name": "D2",
"selected": false
},
{ "@name": "D3" }
]
},
{
"@name": "B3",
"selected": true,
"children": [
{ "@name": "E1" },
{ "@name": "E2" },
{
"@name": "E3",
"children":
{ "@name": "F1" }
}
]
}
]
};

当递归检查命中不包含数组的匹配项(但只是一个对象 - 参见 A1 > B3 > E3 > F1)时,它无法呈现该项目并导致任何可折叠部分重复子项目的错误单击插入符号。

如果发送 JSON 的 API 在只有一个实例的情况下未将子项放入数组中,则不确定如何解决此问题。递归应该考虑到只有一个 child 存在(并且不在数组中)的情况。

最佳答案

我能够从 Raja Modamed 的输入中解决这个问题,并在递归位上增加了一个检查,以防止它在没有数组的情况下访问 child (这可以防止 ngFor 错误并将功能返回到切换)。

https://plnkr.co/edit/OAujF19FPDqaEWvFfgN1?p=preview

@Component({
selector: "recursive-selectable-structure",
template: `
<clr-tree-node [(clrSelected)]="item.selected">
{{item.name}}
<span *ngIf="item.children?.length > 0">
<ng-template
[clrIfExpanded]="item.expanded"
*ngFor="let child of item.children">
<recursive-selectable-structure
[item]="child">
</recursive-selectable-structure>
</ng-template>
</span>
<ng-template *ngIf="item && item.children && !item.children[0]" [clrIfExpanded]="item.children.expanded">
<recursive-selectable-structure [item]="item.children">
</recursive-selectable-structure>
</ng-template>
</clr-tree-node>
`

})

关于angular - 清晰设计 TreeView 递归问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com