当加载不同参数的相同 url 时,Angular2 路由器 2.0.0 不重新加载组件?

新手上路,请多包涵

我的 .routing.ts 文件中有这个

export const routing = RouterModule.forChild([
{
    path: 'page/:id',
    component: PageComponent
}]);

我的 PageComponent 文件检查 id 参数并相应地加载数据。在以前版本的路由器中,如果我从 /page/4 转到 /page/25,页面将“重新加载”并且组件将更新。

现在,当我尝试导航到 /page/X,其中 X 是 id 时,它只会在第一次加载时加载,然后 url 会发生变化,但组件不会再次“重新加载”。

是否需要传递一些东西来强制我的组件重新加载并调用 ngOnInit 事件?

原文由 Gillardo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 325
2 个回答

更新 2

此答案仅适用于很久以前停产的路由器版本。

有关如何在当前路由器中执行此操作,请参阅 https://angular.io/api/router/RouteReuseStrategy

更新 1

现在已通过 https://github.com/angular/angular/pull/13124 为新路由器修复(Angular 2.3),它允许提供自定义重用策略。

有关示例,另请参见 https://www.softwarearchitekt.at/post/2016/12/02/sticky-routes-in-angular-2-3-with-routereusestrategy.aspx

原来的

https://github.com/angular/angular/issues/9811

这是一个已知问题。目前没有办法让路由器在仅参数路由更改时重新创建组件。

他们讨论了最终实施一些重用策略的计划。

您可以订阅参数更改并在那里执行代码,而不是在 ngOnInit()

原文由 Günter Zöchbauer 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 Angular 7.2,路由器 7.2,您可以执行以下操作。

 constructor(
    private router: Router
) {
    this.router.routeReuseStrategy.shouldReuseRoute = function(){
        return false;
    }
}

我尝试了几种方法,但这是我的路由器加载我正在导航到的组件内容的唯一方法。

您可以 在此处 阅读有关路由重用策略的更多信息

原文由 alaasdk 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题