我在window对象上有一个函数可以更改angular4应用程序中的数据,但是在我点击角度应用程序中的一个输入之前,视图不会更新。有没有办法让它立即更新?
我相信这与Angular区域有关,这是正确的吗?
代码:
在下面的代码中,vm引用了我的Angular组件。
window.callback = function(data) {
vm.setKey(data.result);
}
以下函数位于Angular组件中,并正确设置数据,但在应用程序再次与之交互之前,它不会在视图中更新。
setKey(result) {
this.key = result;
}
答案 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