角度2和纯javascript之间的通信

时间:2017-12-06 11:03:15

标签: angular angular2-services

我正在构建一个角度应用程序,我处于一种情况,我必须与外部JavaScript进行通信。

方案 在应用初始化期间,我使用

将两个iframe注入index.html
document.body.appendChild(iframe);

我在index.html中运行脚本,并且有多个函数,其中一个是getData();当应用程序初始化时,我必须从angular app组件向此函数发送数据。怎么去这个?我知道如何从javascript到有角度的通信,但不是相反。请帮我。我很震惊。

1 个答案:

答案 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部分进行通信。