Обновление углового обзора снаружи
У меня есть функция на объекте окна, которая изменяет данные в моем приложении angular4, однако представление не обновляется, пока я не нажму один из входов в приложении angular. Есть ли способ, которым я могу сделать это немедленно обновить?
Я считаю, что это связано с угловыми зонами, это правильно?
Код:
В приведенном ниже коде vm ссылается на мой угловой компонент.
window.callback = function(data) {
vm.setKey(data.result);
}
Приведенная ниже функция находится в компоненте Angular и правильно устанавливает данные, но она не обновляется в представлении, пока приложение не будет снова взаимодействовать с приложением.
setKey(result) {
this.key = result;
}
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