Angular 2将JSON对象传递给新窗口

时间:2017-06-27 13:05:19

标签: javascript angular typescript

我需要在使用window.open()

打开的新窗口中传递JSON对象

我要求将数据库中存储的数据显示到新窗口中。同时我需要将当前打开窗口中可用的JSON对象传递给这个新窗口。

我可能的方式:

  1. 可以在打开新窗口之前将json保存在cookie中,并将其读入 ngOnInit()然后从cookie中删除它。
  2. 可以在URL中传递所需数据,但我有大型JSON对象
  3. 如果我们可以通过任何其他方法做到这一点,请指导。

    谢谢。

3 个答案:

答案 0 :(得分:1)

您也可以使用localStorage而不是Cookie。如果您必须使用window.open(),我认为您没有更好的选择。

为了保持每个组件功能自包含,我会使用服务来获取基于id的json。

答案 1 :(得分:1)

您可以使用打开窗口时获得的窗口对象,而不是使用cookie或localstorage。

var opened_window = window.open('someurl_here');
opened_window.json_data = JSON.stringify(this.local_json_data);

在子窗口中,您可以将数据作为窗口对象的一部分进行访问。

//Inject your window into this component (@Inject('Window') window maybe)
this.new_json_data = JSON.parse(this.window.json_data);

我认为这应该有效。

答案 2 :(得分:1)

我认为你可以使用Window.postMessage。 window.open将返回一个可以调用postMessage的Window对象;在新窗口中,您将要收听"消息"全局窗口对象上的事件。

请注意,IE8和IE9不支持Windows,只支持(i)帧。