PrimeNG Treetable添加节点问题

时间:2018-07-20 10:44:57

标签: primeng angular6

我正在使用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发生了问题

2 个答案:

答案 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