角度路由器导航和重新加载需要渲染一次组件,但渲染两次

时间:2017-09-12 11:31:07

标签: angular angular2-routing

我有一个特殊情况,我需要重定向到一个网址并重新加载。

我在路由器中使用此方法:

this.router.navigateByUrl('login');
this.reload();

其中this.reload()是在角度区域外工作以强制重新加载页面的函数。我需要强制重新加载,因为我无法控制来自服务器的某些资产。

重新加载的代码是:

public reload(): any {
    return this.zone.runOutsideAngular(() => {
        location.reload()
    });
}

问题是:

我在开始时导航到登录,然后重新加载页面,这是默认行为。

必填项:

只需导航而不渲染组件并重新加载,就像我们点击某些未经授权的网址时一样,我们会被重定向到大多数网站的登录页面。

1 个答案:

答案 0 :(得分:5)

如果有人对我正在做的事情感兴趣,我先解决了问题,先找到网页,然后重新加载页面。

首先导入Location

import { Location } from "@angular/common";

然后使用go()导航到您期望的特定网址。

this.location.go('login');

然后使用reload方法重新加载浏览器。

this.reload();

重新加载功能:

public reload(): any {
    return this.zone.runOutsideAngular(() => {
        location.reload()
    });
}

注意:

此方法仅适用于您想要导航和重新加载而不向用户显示两次页面加载的情况。