重新描绘角度成分

问题描述 投票:0回答:2

我有一个Angular组件,显示一些信息(为了这个场景的目的)。在我的typesript组件中,我有一个函数,可以显示新数据。为了方案,让我们说组件无法呈现新信息,除非我重新渲染它。这次我使用setTimeout()这样做:

updateData(){
  this.data=this.dataService.getData();
  this.showComponent=false;
  setTimeout(()=>{this.showComponent=true;},1);

}

这样我确信我的组件将被重新渲染。我知道这是解决问题的一种非常愚蠢的方式。我怎么能做得更好?

angular typescript
2个回答
0
投票

dataService.getData()应返回您订阅的Observable。然后将showComponent设置为true。

像这样的东西:

this.dataService.getData(
    (data) => {
        this.data = data;
        this.showComponent = true;
    }
);

0
投票

ChangeDetectorRef doc

在DOM事件,http请求等异步操作上触发角度变化检测。因此,如果您同步更新值,则更改检测引擎可能会错过这些更改。

所以有两种方法可以解决这个问题:像你一样运行setTimeout或者在下一个摘要循环orChangeDetectorRef.markForCheck()上运行ChangeDetectorRef.detectCahnges()标记组件以立即运行检查。

© www.soinside.com 2019 - 2024. All rights reserved.