【发布时间】:2019-06-26 06:20:08
【问题描述】:
我正在尝试在新选项卡而不是当前页面上打开路由器链接,但目标 _blank 等常规 html 属性不起作用。
<span routerLink="/custompage/{{city.id}}" class="badge badge-primary badge-pill">open</span>
【问题讨论】:
标签: angular
我正在尝试在新选项卡而不是当前页面上打开路由器链接,但目标 _blank 等常规 html 属性不起作用。
<span routerLink="/custompage/{{city.id}}" class="badge badge-primary badge-pill">open</span>
【问题讨论】:
标签: angular
【讨论】:
有一个newer way of opening new tabs using routerLink,但在我看来,这仍然是一个更简单的选择,因为这两种方法仍然需要使用window.open()。
在你的 component.ts 上,
openNewTab(url) {
window.open(url, '_blank');
}
或者你的component.html上的这个
<a href="www.domain.com/custompage/{{city.id}}" target="_blank">
另一个有效的替代方法是编写您自己的自定义指令。在here 上查看它,该人已经编写了它的示例实现。
【讨论】:
window.open() 的说明:它并不总是适用于所有浏览器。除非放在 onClick 属性中,否则不允许在 Safari iOS 中使用。
这是在组件中执行的另一种方式。
openCityInNewWindow(city) {
// Converts the route into a string that can be used
// with the window.open() function
const url = this.router.serializeUrl(
this.router.createUrlTree([`/custompage/${city.id}`])
);
window.open(url, '_blank');
}
Html 看起来像
<ul *ngFor="let city of cities">
<li (click)="openCityInNewWindow(city.id)">{{city.name}}</li>
</ul>
【讨论】:
我遇到了完全相同的问题,我认为我已经找到了两全其美的方法。
将您的 DIV、SPAN 更改为 A 标记。添加 href 链接,但保留 routerLink。
<a routerLink="/custompage/{{city.id}}" href="/custompage/{{city.id}}" class="badge badge-primary badge-pill">open</a>
现在应该如何工作:
【讨论】:
您可以将 target="_blank" 添加到您的链接中
它对我有用:
<a routerLink="/News" routerLinkActive="active" target="_blank" rel="bookmark"></a>
【讨论】: