gpt4 book ai didi

angular - 如何手动强制重新渲染Angular2中的组件?

转载 作者:行者123 更新时间:2023-12-03 20:28:43 25 4
gpt4 key购买 nike

我正在使用 ng Smarttable 并通过事件更改数据源数组(更改是数组内值的 id 更改)。问题是 Angular 没有检测到变化,直到我将鼠标悬停在页面上或单击某处之前什么都没有发生。

因此,更改会在幕后正确应用,并且一旦我单击某处, Angular 就会“看到”这些更改。

所以我可以手动点击很多次来查看 chaning 属性,但这不是我们想要的。

我试过:

  • 在我更改数组的函数中使用 ChangeDetectorRef (markAsChanged & DetectChange)
  • 更改数组后手动进行单击事件
  • 使用不变性 (this.data= [...this.data];)

  • 有可能有这样的东西吗?
    this.renderer.refresh();

    还是只使用 ng smartable 的功能?

    编辑:看起来问题就在我这边。当您“刷新”智能表时,您会得到一个仅在加载完成后执行的 promise 。

    我没有使用 promise 。将正常的 DetectChange() 放入 promise 中使其工作

    最佳答案

    您可以使用 application ref 手动重新渲染。

    将 ApplicationRef 注入(inject)您的组件。

    constructor(appRef: ApplicationRef) {}

    然后在要重新渲染时调用 tick 方法
    appRef.tick();

    关于angular - 如何手动强制重新渲染Angular2中的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55219138/

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