首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Angular 2 iframe到父通信

Angular 2 iframe到父通信
EN

Stack Overflow用户
提问于 2017-01-16 10:53:54
回答 2查看 21.4K关注 0票数 22

在我当前的项目中,我有多个Angular 2应用程序,这些应用程序应该由门户应用程序(也就是Angular 2)提供服务。因此,门户应用程序有一个标题区域,其中包含指向所有底层应用程序的链接。当用户点击一个应用程序链接时,相应的angular 2应用程序将加载到门户主体的iframe中。

现在,我将开发一个集中授权服务。在门户中,我有一个服务,它持有当前登录用户的权限。我的问题是:是否可以在单个应用程序(iframe)中访问angular 2服务/组件(门户)?它似乎在angular 1 via scope中是可能的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-10 15:01:41

我目前正在考虑做一些类似的事情(在iFrame中包含子应用程序的门户应用程序)您可以通过使用window.postMessage发送数据在服务器和客户端之间(在任意方向上)进行通信。

例如,在服务器应用程序上:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var iframe = document.getElementById('useriframe');
    if (iframe == null) return;
    var iWindow = (<HTMLIFrameElement>iframe).contentWindow;

    iWindow.postMessage({"for":"user","data":"anything"}, 'http://localhost:4001');

在客户端应用程序上(托管在iFrame中)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class AppComponent {

@HostListener('window:message',['$event'])
onMessage(e)
{
if (e.origin!="http://localhost:4200")
  {
  return false;
  }
if (e.data.for=="user")
  {
  alert('here i am');
  }
}

显示父中的子帧路由,因此,在我的实现中,我们将令牌和用户信息从外壳应用程序传递给子iFrame,并将路由信息从子应用程序传递回外壳程序,以便url反映在子应用程序中选择的路由。在子应用程序中,您可能有如下路由:

用户应用程序/编辑用户/用户名

,我们希望将其发布到父应用程序并显示路由,如下所示:

http://mywebsite/main/application/user#edituser/bob

请注意,我们使用hashtag来标记子路径,并且在子应用程序中截取每个导航事件并通过

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class MyRoutingComponent implements OnInit {
constructor(private router: Router) { 
router.events.subscribe((event: Event)=>{
  if (event instanceof NavigationEnd){
        let url=(<NavigationEnd>event).url;
        if (url.length>1)//don't post message about base route '/'
          window.parent.postMessage({"for":"dashboard", "operation":"changeroute","route":url},'*')
  }

})
}

然后在父应用程序中解析消息并使用它来更新显示的位置路径。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    url = url +'#' + route;            
    this.location.go(url);
票数 20
EN

Stack Overflow用户

发布于 2018-02-01 03:49:31

嗨,非常感谢@jazza1000给出的解决方案,它帮了我大忙。

我们的问题是在当前(到目前为止)版本的angular cli中,有一个bug阻止了外部JS文件的使用,即使使用了allowJ。我们将使用jsplumb (外部js)来表示一些流程图。(Actual issue on stack overflow)

因此,我们决定采用在另外一个angular 4应用程序中托管使用外部JS的功能的方法。父angular 5应用程序将引入带有iFrame的angular 4应用程序。因此,当用户想要查看流程图时,我们将在iframe中打开angular4应用程序,然后一旦完成,他将在angular 4应用程序中单击保存,这将保存他所做的所有修改,然后发送消息到父窗口,该窗口将关闭/隐藏带有iframe的div。

angular 5中的父应用程序包含以下代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @HostListener('window:message', ['$event'])
  onMessage(e) {
    debugger;
    if (e.origin != "http://localhost:4201") { // set your origin
      return false;
    }
    if (e.data.for == "user") {
      alert('here i am');
    }
  }

我们的iFrame angular 4应用程序on save按钮具有以下代码(我们使用--port4201启动应用程序)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window.parent.window.postMessage({"for":"user","data":"anything"}, 'http://localhost:4200')
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41674712

复制
相关文章
选项卡
HTML代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>选项卡</title> <link rel="stylesheet" href="css/tab.css" /> </head> <body> <div id="tab"> <ul> <li class="select">视频</li
河湾欢儿
2018/09/05
1.5K0
选项卡TabHost
1.布局 1 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/tabHost" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" > 6
欢醉
2018/01/22
1.6K0
选项卡TabHost
Tab选项卡
实现步骤: 实现静态UI效果 用传统的方式实现标签结构和样式 基于数据重构UI效果 将静态的结构和样式重构为基于Vue模板语法的形式 处理事件绑定和js控制逻辑 声明式编程 模板的结构和最终显示的效果基本一致 1.html结构 <div id="app"> <div class="tab"> <!-- tab栏 --> <ul> <li class="acti
梨涡浅笑
2020/12/02
2.2K0
案例选项卡
案例:实现步骤 1. 实现静态UI效果 用传统的方式实现标签结构和样式 2. 基于数据重构UI效果 将静态的结构和样式重构为基于Vue模板语法的形式 处理事件绑定和js控制逻辑 3. 声明式编程
清出于兰
2020/12/01
1.5K0
案例选项卡
js实现选项卡
选项卡就是点击按钮切换到相应内容,其实就是点击按钮把内容通过display(block none)来实现切换的。
wfaceboss
2019/04/08
2.8K0
选项卡(TabHost)使用
使用方式: 从TabActivity中用getTabHost()方法获取TabHost,然后设置标签内容
李小白是一只喵
2020/04/24
1.8K0
Jq实现简单的选项卡功能
下面我们使用Jquery实现简单的选项卡效果,以下为示例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> ul,li{ padding: 0; margin: 0; } .content{ width: 380px; } .content #div0,#div1,#div2{ border:solid 2px pink;
申霖
2019/12/27
7750
Layui Tab 选项卡
layui-tab layui-tab-title layui-tab-content layui-tab-item
用户5760343
2019/10/24
3.3K0
Labview选项卡之实现被选择选项卡工作
有些时候,我们做界面,需要好多个界面切换。如果是同一个 VI 里界面切换,一般都是选项卡了。切换不同选项卡就切换界面了。
Gnep@97
2023/08/16
7701
Labview选项卡之实现被选择选项卡工作
WPF实现选项卡效果(3)——自定义动态添加的AvalonDock选项卡内容
  在前面一篇文章里面,我们实现了AvalonDock选项卡的动态添加,但是对于选项卡里面的内容,我们并没有实现任何有用的功能。   这篇文章里面,我们将实现对选项卡里面的内容和功能实现自定义。 完整系列   ● 第一部分   ● 第二部分   ● 第三部分 在Git中下载工程源码
全栈程序员站长
2022/09/13
1.6K0
WPF实现选项卡效果(3)——自定义动态添加的AvalonDock选项卡内容
小程序 — 选项卡
(2)将用户点击传过来的index值赋给data中改变当前的索引值activeIndex
Ewall
2018/09/30
1.6K0
小程序 — 选项卡
微信小程序----导航栏选项卡(MUI顶部选项卡)
效果图 WXML <import src="../../template/list.wxml"/> <view class="tui-tabbar-content"> <view class="
Rattenking
2021/02/01
1.6K0
微信小程序----导航栏选项卡(MUI顶部选项卡)
Android开发(9) 选项卡的切换
我们想实现的效果是点击切换的选项卡卡部分,主显示区的内容随之改变。那么我们看下页面布局代码
张云飞Vir
2020/03/13
1.6K0
前端|不用JS就能实现的选项卡
在平时浏览网页时,大家经常会使用选项卡来切换页面,在设计网页的过程中,也常用选项卡来整合内容,美化页面效果。简而言之,选项卡就是设置选项的模块,每个选项卡代表一个活动的区域,点击不同的区域,即可展示不同的内容。
算法与编程之美
2020/05/29
1.9K0
前端|不用JS就能实现的选项卡
Tab选项卡切换效果
好了,今天要推荐给大家的这个js动画效果,基本上每个网站都会出现,就是tab选项卡的切换效果。
大M
2021/08/24
3.3K0
Tab选项卡切换效果
如何将来自 Chrome 网络选项卡的请求复制到 Postman?
你有没有想过是否有一种快速的方法将端点调用从你的DevTools 网络选项卡复制到Postman中?
点火三周
2022/04/22
3.6K0
实用tab选项卡切换
itclanCoder
2023/09/14
2610
实用tab选项卡切换
安卓底部选项卡
腾讯QQ有了更新,在自己的手机上更新了一下,试运行了一段时间,被底部的选项卡给深深的迷住了。于是,有了去做做它的原始冲动与欲望,在历经一个早上的琢磨,终于实现了,贴上来,作为给大家的春节祝福吧,在此,小编给大家拜年了,祝大家在新的一年马上有车,马上有房,马上有钱,马上有对象,同时也对浏览我文章的看客表示深深的谢意!
牛老师讲GIS
2018/10/23
1K0
安卓底部选项卡
关于安卓开发选项卡的实现
选项卡(TabHost)方便的在窗口上设置多个标签页,每个标签页相当于获得一个与外部容器相同大小的组件摆放区域 通过这种方式,可以在一个容器中放置多组件。 创建4个java文件并对应layout 创建主java ,代码 1 package lianxi; 2 3 import com.example.jichu_lianxi.R; 4 5 import android.app.TabActivity; 6 import android.content.Intent; 7 import an
听着music睡
2018/05/18
1.1K0
点击加载更多

相似问题

VBA-从工作簿中将特定列复制并过滤到工作表中。

21

在选项卡中显示具有范围的类别?

11

我想在gsheet的特定选项卡中写入数据。

120

将来自Gsheet的两个不同选项卡的数据组合到主Gsheet中

28

jQuery选项卡脚本中的选定选项卡

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文