我正在构建一个角度应用程序,我处于一种情况,我必须与外部JavaScript进行通信。
方案 在应用初始化期间,我使用
将两个iframe注入index.htmldocument.body.appendChild(iframe);
我在index.html中运行脚本,并且有多个函数,其中一个是getData();当应用程序初始化时,我必须从angular app组件向此函数发送数据。怎么去这个?我知道如何从javascript到有角度的通信,但不是相反。请帮我。我很震惊。
答案 0 :(得分:1)
可以通过回调执行基本通信。
回调可以由Angular或非Angular应用程序定义。取决于沟通的方向。
@Injectable()
class GlobalService {
constructor() {
window.vanillaToAngularCallback = data => {
// communicate with other Angular providers
}
}
}
和/或
window.angularToVanillaCallback = data => {
// communicate with other vanilla JS code
}
应该在Angular中调用angularToVanillaCallback
,在Angular外调用vanillaToAngularCallback
。应正确选择第一次回拨呼叫的时间;一方不应该调用回调,直到它们被另一方定义为止。
将非Angular部分保留为Webpack包仍然是可取的。这样就可以避免对window
的引用,并且通过回调或RxJS主题,可以使用公共类与Angular部分进行通信。