Angular 在新选项卡中使用参数打开新组件

问题描述

经过一番研究,我发现没有办法直接用 angular 实现这一点。

所以,我尝试了一种不同的解决方案,我在这里找到了但没有人有效

这是我尝试实现这一目标的实现:

在路由中,我为新组件添加了路由:

{
        path: "popout/:id",component: MetricsComponent,canActivate: [AuthenticationGuard]
}

在我的 html 中,我只有一个调用方法的按钮:

<button target="_blank" class="action-button hvr-float-shadow" mat-mini-fab
                         (click)="openGraphWindow()">
     <mat-icon class="action-icon" svgIcon="METRIC" style="fill: black"></mat-icon>
 </button>

在 ts 文件中:

public openGraphWindow() {
// this.router.navigate(['popout',this.selectedAsset.id]);

  window.open(this.router.url+`/popout/${this.selectedAsset.id}`,'_blank');
}

当我点击按钮时,我得到了这个:

无法获取 /home/detail/popout/37897

所以,在点击之前,网址是: http://localhost:4200/myapp/#/home/detail

当我点击打开新标签时,出现的网址是: http://localhost:4200/home/detail/popout/37897

如您所见,并非 url 的所有部分都被注入,我也尝试过:

window.location.href 而不是 this.router.url

生成了相同的网址

那么如何在带有参数的新选项卡中打开一个新组件?

我尝试过的另一种解决方案是将标签 a 与 routerLink 一起使用,但结果相同

有关信息,我使用的是 Angular 8

感谢您的帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...