订阅来自Iframe的事件,Angular的最佳做法是什么?

时间:2018-10-05 08:01:06

标签: javascript angular iframe javascript-events event-handling

我有一个用Angular编写的应用程序。 我的组件之一包含一个Iframe。在iframe中,有一个(非角度的)应用程序可以发送javascript事件。 在我的组件中,我想订阅这些事件,但不确定什么是最好的方法。 如果我使用本地Javascript,则可以执行以下操作:

window.addEventListener('message', function(e) {
    console.log(e.data);
});

2 个答案:

答案 0 :(得分:0)

您可以为此创建一个可观察对象

  let iFrameEvents = Observable.create((observer) => {
   let eventSource = // create event source here;
   eventSource.onEvent = (event) => observer.next(event.data); // send the new data
  });

,您可以订阅此观察表以获取数据

答案 1 :(得分:0)

例如,将window.addEventListener用作对服务器的任何异步调用。 本质上-创建服务iframeCommunicator(您可以选择任何名称),然后在内部使用此代码。将其包装在事件发射器(或您想要的任何可观察对象)中,然后将服务注入到组件中,然后像使用套接字或http一样使用它。