2017-07-26 77 views
1

我有一個窗口對象的功能,它改變了我的angular4應用程序中的數據,但是視圖不會更新,直到我點擊角度應用程序中的其中一個輸入。有沒有辦法讓我立即更新?從外部更新角度視圖

我相信這與角度區域有關,是對的嗎?

代碼:

在下面的代碼VM是引用我的角度成分。

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

的下面的功能是在角分量,並且正確地正確設置的數據,但它不更新視圖,直至該應用與再次交互。

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

這與該函數的NgZone外運行的事實做,是。如果模型在Angular區域以外發生變異,它不知道任何變化。如果在問題中提供了一些代碼,會更容易提供幫助。 – LarsMonty

+0

@LarsMontanaro完成 – Michael

回答

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(); 
} 

你可以閱讀更多關於如何改變檢測角在這裏工作:https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html