Angular 2 Как заставить Angular обнаруживать изменения, сделанные вне Angular?

Я пытаюсь создать простой пример проекта для проверки механизма обнаружения угловых изменений: я создаю чистый объект JavaScript в тегах сценария на главной странице индекса. он содержит следующее:

        var Tryout = {};
        Tryout.text = "Original text here";
        Tryout.printme = function(){
            console.log(Tryout.text);
        }
        Tryout.changeme = function(){
            Tryout.text = "Change was made";
        }

Одна функция для консольной регистрации, другая для изменения свойства текста.

Теперь в Angular 2 код выглядит так:

import {Component} from "angular2/core"

@Component({
    selector: 'my-app',
    template: `
        <h1>{{TryoutRef.text}}</h1>
        <input type="text" [(ngModel)]="TryoutRef.text">
        <button (click)="consoleLogMe()">Console Log</button>
        <button (click)="changeMe()">Change me inside</button>
    `
})

export class MyApp{

    TryoutRef:any = Tryout;
    constructor(){
    }
    changeMe(){
        this.TryoutRef.changeme();
    }
    consoleLogMe(){
        console.log(this.TryoutRef.text);
    }

}
declare var Tryout:string;

Я пытаюсь сделать следующее: когда я вызываю функцию Tryout.printme () обычно с помощью onclick (полностью вне угла), я хочу, чтобы angular обнаружил изменение и обновил экран.

Мне это удалось: когда я вызываю Tryout.printme () из компонента (функция changeme () вызывает Tryout.printme ()), Angular обнаруживает изменения и обновляет пользовательский интерфейс, что нормально. Кроме того, когда я изменяю внешний вид angular и вызываю consoleLogMe () из Angular, он записывает измененный текст и обновляет пользовательский интерфейс.

Я думаю, мне нужно выполнить Tryout.changeme () в той же зоне, в которой как-то работает Angular. Есть идеи? У меня есть большой проект, который сделан в чистом javascript / jquery, и теперь мне нужно медленно переписывать шаблоны руля в компоненты angular2, не касаясь модели (пока). Для этого мне нужно заставить модель работать в той же зоне, что и угловая.

Если бы я хотел сделать что-то подобное в Angular 1, я бы просто использовал $ scope. $ Apply, чтобы это работало.

Вот рисунок из примера:

Ответы на вопрос(1)

Ваш ответ на вопрос