angular - 如何在不重新加载页面的情况下更改为具有相同组件的路由

标签 angular

Angular 4.3.1

我的路线如下所示:

{ path: ':department', loadChildren: 'app/pages/pages.module#PagesModule' }

和页面路由

{
  path: '',
  component: PagesComponent,
  pathMatch: 'full',
},
{
  path: ':id',
  component: PagesComponent,
}

假设我导航到 /department-name。 PagesComponent 已加载,我进行查找以找到该部门的默认页面并加载内容。如果我随后导航到 /department-name/1PagesComponent 将再次初始化并且屏幕重新加载,我想找到一种不重新加载的方法在这两个路线变化之间。此时,如果我导航到 /department-name/2 内容会发生变化,而页面不会像我想要的那样重新加载。有没有办法可以重新组织事物,以便在 /department-name/department-name/id 之间导航时不会经历组件重新加载?

我找到了这个hack我认为这不起作用,因为 :department 是动态生成的路线。除非有办法让我在路由器配置中获取该参数?

还有this SO 使用 RouteReuseStrategy 编写,但它使用可能重用的路由的静态数组。如果我可以通过 HTTP 调用构建该数组,我就可以做到这一点。我想我可以在初始应用程序加载时做到这一点?

还有更好的建议吗?感谢您的浏览。

最佳答案

 // First import in your component:    
import { Router, NavigationEnd } from '@/router';

 // Then in your component class constructor use below code: 

constructor(private router: Router) { 
    this.router.routeReuseStrategy.shouldReuseRoute = function(){
      return false;
    };
    this.router.events.subscribe((evt) => {
        if (evt instanceof NavigationEnd) {
            this.router.navigated = false;
        }
    });
  }

 // Finally in any of your method, where you want to refresh use below code
  for refresh
 any_method_name() {
    this.router.navigate(['/']);
 }

** NO Hack 之类的,其官方解决方案无需刷新即可加载组件。 **

关于angular - 如何在不重新加载页面的情况下更改为具有相同组件的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45497208/

相关文章:

angular - Angular 的 HTTP 请求中不包含特定参数

angular - 检测 Angular2 中数组内对象的变化

javascript - 显示 NaN 输出的 Js 表达式

angular - 如何有条件地引导 Angular 应用程序?

javascript - 是否可以将 promise 传递给其他中间件并在那里解决?

git - 将 Angular 项目从 GitHub 部署到 Azure 应用服务

Angular 2 : Validators. 模式()不工作

angular - 如何在悬停时向元素添加类?

javascript - 单击单选按钮时折线图不显示数据

ios - Nativescript:在路由器 socket 之间导航