Обновление углового обзора снаружи

У меня есть функция на объекте окна, которая изменяет данные в моем приложении 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

Другие вопросы по тегам