如果路由到相同的参数,Angular不会重新加载

时间:2018-08-29 07:14:46

标签: angular

我想每次单击按钮时都重新加载页面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,但不起作用...我做错了什么吗?

2 个答案:

答案 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