首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在angularjs和角(2-7)应用程序之间共享数据或事件

如何在angularjs和角(2-7)应用程序之间共享数据或事件
EN

Stack Overflow用户
提问于 2019-04-05 06:39:56
回答 2查看 740关注 0票数 1

我有父应用程序在angularjs,内部视图我使用iframe和加载子应用程序(角(2-7))在iframe。我想从角度(2-7)的角度捕捉一个事件或数据。如果使用天使,注意如何使用它。请参考一些尝试捕获iframe属性的最佳实践,但是它在angular2中是不可访问的,并且获取父null。

那window.postMessage呢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-05 06:51:56

我使用postMessage函数实现了这一点。就像这样:

<iframe id="yourId" frameborder="0" [src]="contentUrl"></iframe>

.ts文件中:

代码语言:javascript
复制
public sendEvent(res){

      this.iFrame = document.getElementById('yourId');
      var iWindow = (<HTMLIFrameElement>this.iFrame).contentWindow;

      iWindow.postMessage({
        'func': 'test',
        'obj': ...yourData...
      }, "*");
    }

将捕获此事件的应用程序在app.component中包含以下代码:

代码语言:javascript
复制
@HostListener('window:message', ['$event']) yourFunction(data: any) {
  // your logic here
}

data中,您将获得以下值:

代码语言:javascript
复制
'func': 'test',
'obj': ...yourData...

一个重要的注意事项:使用@HostListener('window:message'将使$scope与组件保持一致,因此您可以自由地使用this,就像通常使用this一样,而不是使用ngZone.bind(this), false之类的东西。

票数 1
EN

Stack Overflow用户

发布于 2019-09-18 20:36:01

另一种方法可以是使用JSChannel

JSChannel支持:

  • 查询/响应
  • 传统rpc查询/更新/响应
  • 将结果增量异步返回到查询通知
  • 火与忘
  • 错误处理
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55529586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档