使用本机JS后,更改检测不起作用

时间:2017-05-23 09:36:02

标签: angular angular2-changedetection

我有一个Angular 2应用程序,它使用mermaidJS构建一个树,这是一个JS(而不是TS)框架。

要将此树上的点击绑定到Angular事件,请在我的ngOnInit()方法中创建窗口函数,如下所示:

window['myFunctionToBeCalledFromTheTree'] = () => { ...}

一切都很好。

发生的问题是,一旦调用了这些函数中的任何一个,Angular就不再检测到更改。我已经找到了变换探测器的快速解决方法,但我必须每次都调用它。

我的问题是,有没有办法将其自动更改检测交还给Angular?

1 个答案:

答案 0 :(得分:1)

问题是回调中的代码在Angular区域之外运行。你需要在Angular区域内运行它:

window['myFunctionToBeCalledFromTheTree'] = () => { this.zone.run(() => { ... } }

您无法在此处使用更改检测器,因为更改检测期间所做的更改将不会被下一个更改检测循环选中。