【问题标题】:Angular Router navigate and reload need to render the component once but renders twiceAngular Router 导航和重新加载需要渲染一次组件但渲染两次
【发布时间】:2017-09-12 11:31:06
【问题描述】:

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

我在路由器上使用这个方法:

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

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

reload的代码是:

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

问题是:

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

所需输出:

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

【问题讨论】:

  • 您可以跳过navigateByUrl,而是替换窗口的location 属性:location.replace('myUrl');
  • 它只会重新加载更多并且不会改变路由的url。

标签: angular angular2-routing


【解决方案1】:

如果有人有兴趣做我正在做的事情,我已经解决了这个问题,首先转到 url 然后重新加载页面。

第一次导入Location

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

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

this.location.go('login');

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

this.reload();

reload函数在哪里:

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

注意:

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

【讨论】:

    猜你喜欢
    • 2017-12-29
    • 2020-03-14
    • 2020-07-14
    • 2021-10-11
    • 2019-05-26
    • 1970-01-01
    • 2020-12-04
    • 2021-09-19
    • 1970-01-01
    相关资源
    最近更新 更多