【问题标题】:PrimeNG Treetable adding nodes issuePrimeNG Treetable 添加节点问题
【发布时间】:2018-12-28 15:54:17
【问题描述】:

我正在使用 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 中出现问题

【问题讨论】:

  • 你找到解决办法了吗?
  • 还没有 :( 我希望它会在下一个 PrimeNG 版本中得到解决。
  • 尝试添加素数,它解决了我的问题
  • 我已经有了。将版本从“1.0.0-beta.9”更新到“1.0.0-beta.10”也没有成功
  • 更新到 Angular 6.1.0、PrimeNg 6.0.2 和 Primeicons 1.0.0-beta.10 并没有解决问题...

标签: primeng angular6


【解决方案1】:

从 PrimeNG 5 迁移到 6 后,我遇到了同样的问题。Artem 的解决方案有效,但也导致树表闪烁。

我找到了另一个解决方案 - 只需更改根节点的引用,这将刷新树。添加/删除节点后添加此行:

this.roots = [...this.roots]; // change "roots" to your variable name

【讨论】:

    【解决方案2】:

    我也遇到过同样的问题,spread 运算符也没有为我工作,但幸运的是我找到了解决方法here(这里他们试图刷新 prime-ng 数据表) 这不是直接的解决方案,但它可以在组件中的错误(我相信如此)未修复时为您节省。

    这是来自original answer 的代码,对treetable 略有改动:

    visible: boolean = true;
    updateVisibility(): void {
      this.visible = false;
      setTimeout(() => this.visible = true, 0);
    }
    <button (click)="updateVisibility()">
    
    <p-treeTable *ngIf="visible"></p-treeTable>
    

    附:我使用 Angular 5,但希望它会有所帮助

    【讨论】:

    • 嗯,这是一个巧妙的解决方法。我刚刚添加了 setTimeout(() => this.visible = true, 0);您从原始答案中忘记了它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 2021-01-02
    相关资源
    最近更新 更多