我正在使用Angular(6.0.9)和PrimeNG(6.0.1)的最新稳定版本。当我尝试以编程方式将子节点添加到所选节点时,除非我折叠然后展开所选父节点,否则它不会显示。首先我尝试过
this.selectedNode.children.push(this.nodeToAdd);
然后我在官方文档中看到,如果您使用操纵值,例如删除节点,添加节点或更改节点的子代,而不是使用诸如push之类的数组方法,则splice会创建一个新的数组引用使用扩展运算符或类似的”。所以我尝试了这个:
this.selectedNode.children = [...this.selectedNode.children, this.nodeToAdd];
,但结果相同。是否有人遇到相同的问题,或者我做错了什么? Chrome,Firefox和Edge发生了问题
答案 0 :(得分:1)
我也遇到了同样的问题,传播运算符也没有为我工作,但幸运的是,我找到了解决方法here(在这里他们尝试刷新prime-ng数据表) 这不是直接的解决方案,但可以解决组件中的错误(我相信是这样)的情况,这样可以节省您的时间。
这是来自original answer的代码,对于树表略有更改:
visible: boolean = true;
updateVisibility(): void {
this.visible = false;
setTimeout(() => this.visible = true, 0);
}
<button (click)="updateVisibility()">
<p-treeTable *ngIf="visible"></p-treeTable>
P.S。我使用Angular 5,但希望无论如何都能帮上忙
答案 1 :(得分:0)
从PrimeNG 5迁移到6后,我遇到了同样的问题。Artem的解决方案有效,但也导致树表闪烁。
我发现了另一个解决方案-只需更改根节点的引用,这将刷新树。添加/删除节点后添加以下行:
this.roots = [...this.roots]; // change "roots" to your variable name