我想重新加载页面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