如何使用[routerLink]和target =“ _ blank”导航到内部页面而无需重新加载?

时间:2019-04-04 13:29:43

标签: javascript angular html5 angular6

我正在尝试使用[routerLink]target="_blank"导航到内部页面,而无需重新加载整个应用程序。

我可以将页面加载到另一个选项卡中,但是整个应用程序都将重新加载。

HTML:

<a [routerLink]="getRouterLink(parm1,parm2)" target="_blank">

TypeScript:

public getRouterLink = function(parm1: string , parm2: string ) : any[] {
    let link : any[] = ['/pages/myPage', {}];
    let params = {};
    params['parm1'] = parm1;
    params['parm2'] = parm2;

    link[1] = params;

    return link;
  };

是否有一种方法可以使它导航到新页面而无需重新加载应用程序?

4 个答案:

答案 0 :(得分:1)

没有绝对,没有重新加载应用程序就无法在新标签页中打开应用程序的情况。

您可以创建第二个轻量级的应用程序(这样可以快速加载)并在新标签页中打开它。

或者,如果您使用的是lazy loading,并在新标签页中打开它,则只会加载所需的组件,这会相对较快。

答案 1 :(得分:1)

  

是否有一种方法可以使它导航到新页面而无需重新加载应用程序?

不会,因为当您打开新标签页时,将从index.js加载应用程序。

答案 2 :(得分:1)

我以前在here上回答过类似的问题。由于Angular的启动方式,无法阻止重新加载。但是简而言之,如果要在新选项卡上打开它,则应在component.ts上使用它。

const url = 'www.domain.com/pages/myPage?params=value';
window.open(url, '_blank');

或者只是在您的component.html上

<a href="www.domain.com/pages/myPage?params=value" target="_blank">

但是,如果必须使用routerLink,则还有其他方法,例如编写自己的自定义指令。通过here进行检查,该人已经编写了一个示例实现。

答案 3 :(得分:0)

页面无法重新加载,即按角度工作! 您可以简单地使用

<a href="#" target="_blank">