当前位置:  开发笔记 > 编程语言 > 正文

Router Navigate在同一页面时不会调用ngOnInit

如何解决《RouterNavigate在同一页面时不会调用ngOnInit》经验,为你挑选了3个好方法。

router.navigate在同一页面上调用一些查询字符串参数.在这种情况下,ngOnInit()不会打电话.它是默认还是我需要添加其他内容?



1> Günter Zöchb..:

你可以注入ActivatedRoute和订阅params

constructor(route:ActivatedRoute) {
  route.params.subscribe(val => {
    // put the code from `ngOnInit` here
  });
}

路由器仅在导航到不同路径时销毁并重新创建组件.如果仅更新路径参数或查询参数但路径相同,则不会销毁和重新创建组件.

强制重新创建组件的另一种方法是使用自定义重用策略.另外,当相同的url加载了不同的参数时,Angular2路由器2.0.0没有重新加载组件?(似乎没有太多可用的信息,但如何实现它)


谢谢,很好的解决方案.干净我想.

2> 小智..:

您可以在路由器上调整reuseStrategy.

constructor(private router: Router) {
    // override the route reuse strategy
    this.router.routeReuseStrategy.shouldReuseRoute = function() {
        return false;
    };
}



3> Dionis Oros..:

您可能需要重新加载页面吗?这是我的解决方案:我已经更改了@NgModule(在我的情况下为app-routing.module.ts文件):

@NgModule({
  imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload'})] })

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有