Какова лучшая практика в Angular для подписки на события, приходящие из Iframe? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть приложение, написанное на Angular.Один из моих компонентов содержит Iframe.В Iframe есть (неугловое) приложение, которое отправляет события javascript.В моем компоненте я хотел бы подписаться на эти события, но не уверен, что это лучший способ сделать.Если бы я был в нативном Javascript, я бы сделал следующее:

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

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Используйте window.addEventListener, например, для любого асинхронного вызова к серверу.По сути - создайте сервис iframeCommunicator (вы можете выбрать любое имя) и внутри используйте этот код.Оберните его в источник событий (или любой другой наблюдаемый объект, который вам нужен), а затем просто внедрите сервис в ваш компонент и используйте его, как если бы вы использовали сокет или http.

0 голосов
/ 05 октября 2018

вы можете создать наблюдаемую для этого

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

, и вы можете подписаться на эту наблюдаемую, чтобы получить ваши данные

...