1

angular4アプリのデータを変更するウィンドウオブジェクトの関数がありますが、角度アプリ内の入力の1つをクリックするまでビューは更新されません。すぐに更新できる方法はありますか?

これは角度ゾーンに関連していると思いますが、正しいですか?

コード:

以下のコードでは、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 に答える