角度-子组件仍在加载时,父组件陷入困境

时间:2020-05-08 07:57:08

标签: angular

我有一个父组件和一个子组件(基本上是一个上下文菜单)。
当我右键单击父级的表行时,子级组件显示为上下文菜单。
当我单击上下文菜单上的链接时,它将在新选项卡中打开链接。
到目前为止还可以,但是问题是,在新页面完成加载之前,我无法在父页面上单击或进行任何交互。我该如何预防呢?

这是父组件表行的代码

 <tr (contextmenu)="onrightClick($event,rowData['id'])">


 onrightClick(event, data) {
        event.preventDefault();
        this.contextmenuX = event.clientX;
        this.contextmenuY = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
        this.contextMenuRouterLink = 'myLink/' + data;
        this.contextmenu = true;
    }
    //disables the menu
    disableContextMenu() {
        this.contextmenu = false;
    }

这是我在父页面中添加子组件(上下文菜单)的方式

<div *ngIf="contextmenu">
    <app-context-menu-open-in-new-tab [x]="contextmenuX" [y]="contextmenuY" [routerLink]="contextMenuRouterLink" (disableContextMenu)="disableContextMenu()"></app-context-menu-open-in-new-tab>
</div>

这是子组件的代码
注意:我使用eventEmitter关闭父页面上的上下文菜单。

<div class="contextmenu" [ngStyle]="{'left.px': x, 'top.px': y}">
    <a (click)="onLinkClick($event);" href="{{routerLink}}" target="_blank">Open your data in new tab</a>
</div>

 onLinkClick(event) {
       this.disableContextMenu.emit(null);
       event.stopPropagation();
    }

1 个答案:

答案 0 :(得分:1)

您可以添加

rel="noopener" to you link

这可以防止源页面继续等待新页面完成加载/执行。