从外面更新角度视图

时间:2017-07-26 23:24:16

标签: angular zones

我在window对象上有一个函数可以更改angular4应用程序中的数据,但是在我点击角度应用程序中的一个输入之前,视图不会更新。有没有办法让它立即更新?

我相信这与Angular区域有关,这是正确的吗?

代码:

在下面的代码中,vm引用了我的Angular组件。

        window.callback = function(data) {
            vm.setKey(data.result);
        }

以下函数位于Angular组件中,并正确设置数据,但在应用程序再次与之交互之前,它不会在视图中更新。

setKey(result) {
    this.key = result;
}

1 个答案:

答案 0 :(得分:1)

如果您想在函数中手动触发角度变化检测循环,可以将ChangeDetectorRef的引用注入到组件中,并调用detectChanges()方法来触发它。

看起来像这样:

// import ChangeDetectorRef
import { ChangeDetectorRef } from '@angular/core'

// Your component's constructor
constructor(changeDetector : ChangeDetectorRef)
{ ... }

// Your setKey method
setKey(result) {
    this.key = result;
    this.changeDetector.detectChanges();
}

您可以在此处详细了解有关变更检测在Angular中的工作原理:https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html