angularjs - 如何在angularjs和angular(2-7)应用程序之间共享数据或事件
问题描述
我在 angularjs 中有父应用程序,在内部视图中我正在使用 iframe 并在 iframe 中加载子应用程序(角度(2-7))。我想在 angularjs 中从 angular (2-7) 捕获事件或数据。如果使用 angularjs 看如何使用它。请参考一些尝试捕获 iframe 属性的最佳实践,但在 angular2 中无法访问它并获取父级 null。
那么 window.postMessage 呢
解决方案
我使用该postMessage
功能实现了这一点。像这样的东西:
<iframe id="yourId" frameborder="0" [src]="contentUrl"></iframe>
在.ts
文件中:
public sendEvent(res){
this.iFrame = document.getElementById('yourId');
var iWindow = (<HTMLIFrameElement>this.iFrame).contentWindow;
iWindow.postMessage({
'func': 'test',
'obj': ...yourData...
}, "*");
}
将捕获此事件的应用程序在以下代码中具有此代码app.component
:
@HostListener('window:message', ['$event']) yourFunction(data: any) {
// your logic here
}
在data
您将拥有这些值:
'func': 'test',
'obj': ...yourData...
重要说明: using@HostListener('window:message'
将保留$scope
组件,因此您可以像正常使用它一样自由使用this
它,而不是使用类似ngZone
或.bind(this), false
推荐阅读
- stored-procedures - Sap HANA Graphscript - 多行结果的性能下降
- ruby-on-rails - Ruby on Rails 设计 Recaptcha 注册/会话失败
- android - 在 Android 中单击时更新包含在自定义通知中的按钮的文本
- c# - 无需单击即可打开 TreeView
- string - Pandas 数据框列在字符串(即“float”)内浮动到 int
- raku - Cro WebSocket 客户端看不到服务器何时关闭
- web-services - HAProxy 多个前端/侦听器
- vba - 字符数 VBA 用户窗体
- javascript - 将 Javascript 库 (jsencrypt) 导入 Angular 2 应用程序
- javascript - 基于路由的快速静态文件 URL 更改