角度路由器导航然后重新加载

Posted

技术标签:

【中文标题】角度路由器导航然后重新加载【英文标题】:angular router navigate then reload 【发布时间】:2019-05-03 08:06:56 【问题描述】:

所以我想在导航到特定路线后重新加载应用程序..

我使用 router.navigate 导航到基于用户角色的特定路由,并且工作正常,但如果来自登录页面(不是每次用户打开特定路由),我必须在路由后重新加载页面 - 并在此处重新加载是根据用户的语言更新页面语言

所以我尝试做的是

  else if(this.sp.role === 'Admin') 
      console.log('ooo')
      this.router.navigate(['/admin/dashboard']); 
      this.window.location.reload();

但这会重新加载登录页面

【问题讨论】:

导航到同一个组件不会重新加载数据 - ***.com/a/68503542/7573844 【参考方案1】:

简单

this.router.navigate(['path/to'])
  .then(() => 
    window.location.reload();
  );

【讨论】:

重新加载页面需要太多时间 找了好久的答案,简单有效 如果速度变慢,请进行真正的重新加载:window.location.href = window.location.protocol + '//' + window.location.host + '/path/to';。这更符合用户的期望。 简单有效的解决方案,帮了我,谢谢! 问题:您可以看到导航页面闪烁,然后重新加载。不好。【参考方案2】:

您可以做的是将重新加载逻辑转移到需要重新加载的实际组件。您可以订阅 NavigationEnd 事件,然后检查您来自的路线,例如

this.router.events
  .pipe(
    filter(value => value instanceof NavigationEnd),
  )
  .subscribe(event => 
  if (event.url === 'http://mypreviousUrl.com') 
    this.window.location.reload();
  
);

【讨论】:

【参考方案3】:

简单地做

location.href = '/admin/dashboard';

【讨论】:

这个答案拯救了我的一天。

以上是关于角度路由器导航然后重新加载的主要内容,如果未能解决你的问题,请参考以下文章

查询参数更改时,角度路由器导航不会加载页面

在同一导航单击上重新加载路由器组件 - 在导航单击上刷新页面

如果路由到相同的参数,角度不会重新加载

如何以角度2刷新页面

nginx - django 2 -angular 6 / 角度路由在重新加载页面后得到 404

嵌套反应路由器组件不会在页面重新加载时加载/渲染?