我有一个使用Bootstrap V3.3.7下拉菜单控件制作的下拉菜单,其中包含多个链接,但这些链接仅在我右键单击并在新选项卡中打开时才有效 . 如果我左键单击,没有任何反应 . 控制台上没有错误,也没有网络活动 . 显然,如果我尝试在新标签中打开它们,它们就是有效的链接 .

我的HTML:

<ul class="dropdown-menu">
      <li *ngFor="let item of safeUrlPair(button)">
        <a class="dropdown-item" [href]="item.value">{{ item.key }}</a>
      </li>
</ul>

打字稿的一部分:

safeUrlPair: () => [{ key: 'Link Text', value: this.object && this.object.id ? this.getSafeLink(`${this.objectLink}${this.object.id}`) : '' }

getSafeLink方法:

getSafeLink(link: string): SafeUrl {
    return this.domSanitizer.bypassSecurityTrustUrl(link);
}

我提出了一个不太有用的解决方法,但它已经取得了进展 .

新HTML:

<ul class="dropdown-menu">
      <li *ngFor="let item of safeUrlPair(button)">
        <a class="dropdown-item" (click)="triggerLink(item.value)">{{ item.key }}</a>
      </li>
</ul>

而triggerLink功能:

triggerLink(url: string): void {
   if (!url) {
     return;
   }

   window.open(url, '_blank');
}

这允许左键单击工作并在新选项卡中打开链接,但由于它是safeURL,因此url不会作为典型链接传递,如http://www.google.com .

它最终是这样的:http://localhost:4200/SafeValue%20must%20use%20[property]=binding:%20https://www.google.com%20(see%20http://g.co/ng/security#xss)