【问题标题】:Angular 2 opening a static pageAngular 2打开一个静态页面
【发布时间】:2016-06-16 12:11:21
【问题描述】:

我有 angular 2 项目。我想在新窗口中打开服务器上可用的静态帮助文件。我试过window.open(help/index.html)。 它导航到页面,但抛出关于找不到路由的错误。 我也尝试在角度区域之外运行代码,但没有区别。 我怀疑浏览器位置更改时,角度会在下一个更改检测周期中检测到它并尝试路由到该 URL。 可以做些什么来实现这一目标。

【问题讨论】:

  • 您是否要离开您的应用程序?
  • 不完全是。我正在单独的选项卡/窗口中打开应用程序的帮助内容。

标签: angular angular-routing


【解决方案1】:

您可以尝试利用window.open() 方法的name 参数,它等效于锚标记中的target 属性。

window.open("help/index.html", "_blank");

工作Plunker 示例

【讨论】:

  • 谢谢。我之前尝试过,它也在没有这个参数的情况下导航到新页面,但是如果你查看开发工具,你会看到很多来自路由器的错误。我不确定 plunkr 是否会抑制该错误,因此请尝试下载 plunkr。我会再试一次,让你知道。
  • 感谢这工作。问题是我只是指定 window.open("help", "_blank");并假设它会自动重定向到索引页面,但 Angular 将其视为路线更改而不是静态页面导航,这会导致所有这些错误,
  • 如果我尝试从应用模块的 ngOnInit() 打开它会进入无限循环
【解决方案2】:

我解决该错误的方法是将window.open 包裹在超时中。这允许打开的窗口在角度代码完成后运行。通常你不想在你的应用程序内部使用超时,但由于这是在一个新位置打开一个新窗口,它不会使用你的应用程序的相同实例,所以应该没问题。

setTimeout(() => {
  window.open("./README.md", "_blank");
});

Working Plunker

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    相关资源
    最近更新 更多