问题:在使用js插件的过程中,想再js插件触发方法然后调用angular内部的方法;
解决方案:
将组件在全局映射中注册,使用构造函数或ngOnInit()其他任何生命周期挂钩来注册组件并ngOnDestroy()取消注册。以此来达到目的;
原理:从Angular外部调用Angular方法时,Angular无法识别模型更改。这就是Angulars的NgZone目的。要获得对Angular区域的引用,只需将其注入构造函数
代码:
1.构造函数内映射
export class MyComponent implements OnDestroy{
constructor(zone:NgZone) {
//映射注册
window['MyComponent'] = {component: this, zone: zone};
}
ngOnDestroy() {
//映射注销
window['MyComponent'] = null;
}
callFromOutside(){
console.log('外部调用');
}
}
2.外部调用
//外部js调用
window.MyComponent.component.callFromOutside();
这样简单的两步,就完成了在外部函数中调用angualr内部的方法