如果路由到同一参数,则角度不重新加载



我想重新加载页面article/:id每次单击按钮时,只要:id更改,Angular 就可以重新加载页面,但如果路由到同一:id,那么它会忽略更改。

export class DocumentComponent {
constructor(
private activatedRoute: ActivatedRoute,
private router: Router
) {}
ngOnInit() {
this.routeSubscription = this.activatedRoute.params.subscribe(params => {
this.reloadPage(+params['id']);
});
}
clickReload(id: number) {
this.router.onSameUrlNavigation = 'reload';
this.router.navigate(['article', id]);
}
}

当参数更改时,将触发可观察params,并执行reloadPage()。但是,当我尝试重新加载相同的params时,Angular 忽略它,我该如何重新加载相同的param

article/123 --> article/456 [ok]
article/111 --> article/222 [ok]
article/666 --> article/666 [not ok, how?]

我尝试使用onSameUrlNavigation,但它不起作用...我做错了什么吗?

您需要检查 id 是否相同,然后重新加载页面。你可以这样做:

clickReload(id: number) {
if(id == this.activatedRoute.snapshot.params.id) {
window.location.reload();    //if id is same then just reload the page
} else {
this.router.navigate(['article', id]);
}
}

您可以按如下所示添加并删除验证..只需导航就足够了。

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

例:

https://stackblitz.com/edit/mlc-onsameurlnavigation-activatedroute?file=app%2Fapp-routing.module.ts

最新更新