如何以正确的方式在 Angular 8 中重新加载页面

2024-01-04

注意。我通过谷歌搜索得到了一组结果,但是,正如我在最后解释的那样,我觉得由于多样性,它们并不可靠。

我有两种实用方法 - 一种用于导航到父节点,另一种用于重新加载自身。第一个按预期工作,而另一个则无法导致重新加载。

navigateToParent(route: ActivatedRoute) {
  const options: NavigationExtras = { relativeTo: route };
  this.router.navigate([".."], options);
}

navigateToSelf(route: ActivatedRoute) {
  this.router.routeReuseStrategy.shouldReuseRoute = () => false;
  this.router.onSameUrlNavigation = "reload";
  const self = ".";
  this.router.navigate([self]);

  // const options: NavigationExtras = { relativeTo: route };
  // this.router.navigate(["."], options);
}

我按照答案here https://stackoverflow.com/a/57157316/1525840,唯一的例外是我希望导航到的路径是通用的,而不是硬编码的。我尝试过传递不同的参数,例如self="." and self=""等等似乎没有什么可以给我所需的重新加载。

我想念什么?

我也尝试从route传递到服务的方法中,但我只看到一堆可观察值,而不是实际的段。而且当然,this.router.navigate(路线)仅仅导致了一个错误。

谷歌搜索产生了很多提示,建议差异很大(例如this https://stackoverflow.com/questions/56715352/how-to-refresh-element-in-angular-8-without-page-reload),这让我怀疑它可能严重依赖于版本(我使用的是 8.0),而且,许多建议虽然被接受,但从长远来看可能会产生误导,而且更有害,如果没有我意识到它。


好的,下一个示例适用于我,无需重新加载页面:

在路由器组件上,您必须添加“onSameUrlNavigation” 路由器组件:

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

现在您想要重新加载的组件

constructor(private router: Router){
  this.router.routeReuseStrategy.shouldReuseRoute = () => {
    return false;
  };
}

someFunction(){
  this.router.navigateByUrl('/route');
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以正确的方式在 Angular 8 中重新加载页面 的相关文章

随机推荐