我router.navigate
在同一页面上调用一些查询字符串参数.在这种情况下,ngOnInit()
不会打电话.它是默认还是我需要添加其他内容?
你可以注入ActivatedRoute
和订阅params
constructor(route:ActivatedRoute) {
route.params.subscribe(val => {
// put the code from `ngOnInit` here
});
}
路由器仅在导航到不同路径时销毁并重新创建组件.如果仅更新路径参数或查询参数但路径相同,则不会销毁和重新创建组件.
强制重新创建组件的另一种方法是使用自定义重用策略.另外,当相同的url加载了不同的参数时,Angular2路由器2.0.0没有重新加载组件?(似乎没有太多可用的信息,但如何实现它)
您可以在路由器上调整reuseStrategy.
constructor(private router: Router) { // override the route reuse strategy this.router.routeReuseStrategy.shouldReuseRoute = function() { return false; }; }
您可能需要重新加载页面吗?这是我的解决方案:我已经更改了@NgModule(在我的情况下为app-routing.module.ts文件):
@NgModule({ imports: [RouterModule.forRoot(routes, {onSameUrlNavigation: 'reload'})] })