1

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

我相信这与 Angular 区域有关,对吗?

代码:

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

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

下面的函数在 Angular 组件中,并且正确地设置了数据,但是在再次与应用程序交互之前,它不会在视图中更新。

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

1 回答 1

3

如果您想在函数中手动触发 Angular 更改检测循环,您可以将引用注入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

于 2017-07-27T00:02:59.140 回答