重定向后的 Angular 浏览器后退按钮

Mat*_*att 5 redirect router back-button angular

我有一个委托组件,除了通过路径(例如/tournament/:id)中的ID解析对象、检测锦标赛的类型并转发(通过router.navigate(..))到另一条路线(例如/tournament/:id/league)之外,什么也不做。

问题是浏览器后退按钮将返回到委托组件并显示我的委托组件的空模板。

router.navigate除了考虑以下因素之外,是否还有其他选项可以转发到另一个组件:

  1. 浏览器后退按钮不会跳转到委托组件
  2. 路由/tournament/:id/league应该反映在浏览器 URL 中

Mat*_*att 1

我找到了一种解决方法,仍然希望有人能提出更复杂的东西,因为这个片段必须放入每个组件中。

它被放入构造函数中并检查新路由是否是委托组件之一。如果是这样,请重定向到另一条路线。

_location.subscribe(loc => {
  let routeOfDelegatingComponent = "....";
  if (loc.url === routeOfDelegatingComponent) {
    router.navigate(['/acustomroute']);
  }
});
Run Code Online (Sandbox Code Playgroud)