如何在Angular2中手动强制重新组合组件?

问题描述 投票:1回答:1

我正在使用Smarttable并通过事件更改数据源数组(更改是数组内值的id更改)。问题是角度没有检测到变化,没有任何反应直到我将鼠标悬停在页面上或点击某处。

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

所以我可以手动点击很多次以查看更改属性,但这不是所希望的。

我试过了:

  1. 在我更改数组的函数内使用ChangeDetectorRef(markAsChanged&DetectChange)
  2. 更改阵列后手动进行单击事件
  3. 使用Immutability(this.data = [... this.data];)

有可能有这样的东西吗?

this.renderer.refresh();

或仅使用ng smartable的功能?

编辑:看起来问题就在我身边。当您“刷新”智能表时,您将获得一个仅在加载完成后才执行的承诺。

我没有用过这个承诺。将正常的Detect Change()置于promise中使其工作

angular angular-template ng2-smart-table
1个回答
3
投票

您可以使用应用程序引用手动重新渲染。

将ApplicationRef注入组件。

constructor(appRef: ApplicationRef) {}

然后在需要重新渲染时调用tick方法

appRef.tick();
© www.soinside.com 2019 - 2024. All rights reserved.