我想每次单击按钮时都重新加载页面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
,但不起作用...我做错了什么吗?
答案 0 :(得分:3)
您需要检查ID是否相同,然后重新加载页面。您可以这样做:
Collections.sort(stringList, String::compareToIgnoreCase);
答案 1 :(得分:2)
您只需添加以下内容并删除验证即可。仅导航就足够了。
@NgModule({
imports: [RouterModule.forRoot(routes, {
onSameUrlNavigation: 'reload',
enableTracing: false
})],
exports: [RouterModule]
})
示例:
https://stackblitz.com/edit/mlc-onsameurlnavigation-activatedroute?file=app%2Fapp-routing.module.ts