我有一个Angular 2应用程序,它使用mermaidJS构建一个树,这是一个JS(而不是TS)框架。
要将此树上的点击绑定到Angular事件,请在我的ngOnInit()
方法中创建窗口函数,如下所示:
window['myFunctionToBeCalledFromTheTree'] = () => { ...}
一切都很好。
发生的问题是,一旦调用了这些函数中的任何一个,Angular就不再检测到更改。我已经找到了变换探测器的快速解决方法,但我必须每次都调用它。
我的问题是,有没有办法将其自动更改检测交还给Angular?
答案 0 :(得分:1)
问题是回调中的代码在Angular区域之外运行。你需要在Angular区域内运行它:
window['myFunctionToBeCalledFromTheTree'] = () => { this.zone.run(() => { ... } }
您无法在此处使用更改检测器,因为更改检测期间所做的更改将不会被下一个更改检测循环选中。