【问题标题】:Not able to redirect the route after windows reloadWindows重新加载后无法重定向路由
【发布时间】:2019-09-17 20:56:56
【问题描述】:

我有两个页面,分别是角色列表和角色详细信息。有取决于角色的要求,我需要在单击保存按钮后隐藏菜单选项。这我可以用下面的代码来实现

windows.location.reload();

重新加载后我需要导航到不同的页面..为此我使用下面的代码。

if(this.menuHide == "true"){     
   window.location.reload();
   this.router.navigateByUrl('/', {skipLocationChange: true}).then(()=>
   this.router.navigate(['role-list']));
} 

也尝试了这些选项

this.router.navigate(['/role-list']));
this.router.navigateByUrl('/role-list'); 

reload 方法下面的代码没有执行,这意味着它没有重定向到role-list 页面。我正在使用angular 7 版本。

任何人都可以就如何导航到其他页面提出任何想法,这将不胜感激,非常感谢。

【问题讨论】:

  • 一旦您执行window.location.reload();,由于您告诉浏览器重新加载,下一个代码是否不会按设计执行?您是否考虑过使用共享的 Angular 服务来显示/隐藏菜单而不是重新加载页面?

标签: javascript angular angular7 angular-routing angular7-router


【解决方案1】:

你不应该打电话

window.location.reload();

您在这里所做的是重新加载整个页面并破坏 Angular 应用程序。您永远不应该在单页应用程序中执行此操作,例如使用 Angular 创建的应用程序。调用 reload 之后的任何代码都将永远不会执行,因为您已经破坏了整个 JavaScript 应用程序并从头开始重新加载整个事物,这是不可取的。

在 Angular 中,我们使用一种现代的编程风格,称为基于 RxJs 可观察对象的反应式编程。这是一个远远超出 StackOverflow 答案范围的概念,但您的菜单应该对角色的 Observable 做出反应。

【讨论】:

    【解决方案2】:

    如果你只想隐藏菜单而不需要重新加载整个页面,只需实现一个隐藏功能并使用它。 仅使用“路由器”无法在新选项卡中打开,您必须单独创建链接并使用“window.open()”函数调用它。

    this 可以帮助您进行路由

    【讨论】:

    • 我无法隐藏菜单,因为它是从数据库驱动的,而且我不是在浏览器的新标签中寻找打开,而是在寻找相同的标签刷新..
    【解决方案3】:

    我用下面的代码解决了这个问题

      if(this.menuHide == "true"){
          this.router.navigate(['/role-list']).then(()=>{
               window.location.reload();
           });
        } 
    

    它工作得很好.. 谢谢大家的宝贵建议。

    【讨论】:

      猜你喜欢
      • 2020-06-29
      • 2016-10-28
      • 1970-01-01
      • 2021-12-16
      • 2020-02-15
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      相关资源
      最近更新 更多