我有一条这样的路径:
site.ru/one/two
我手动去的,即使用routerLink等。现在,当我调用该方法时,我想在单击时向上两级:
this.router.navigate(['../..'], {relativeTo: this.route})
我正确地进行并最终得到:
site.ru
但有一个细微差别,当我按照这条路径将其复制并粘贴到浏览器的地址栏中,然后尝试通过调用导航方法向上两级时,导航会发生到上一页,而不是更高两级相对于当前路线,就像我调用 window.history.back() 一样。
也许这个方法 this.router.navigate() 的工作原理完全一样 - 我不知道。因此,我请求帮助解决此案。
您描述的问题与 Angular 中相对导航的工作方式有关,它在 Vue 和 React 中的工作方式几乎相同。
this.router.navigate()
相对路径方法将取决于当前 URL 和导航上下文。如果将路径粘贴到浏览器的地址栏中,则 Angular 或任何其他框架不会参与此过程,浏览器会自行处理 URL。为了解决这个问题并向上移动两级而不管当前的 URL 是什么,您可以使用绝对路径而不是相对路径进行导航。为此,您可以
/
在路径的开头使用 at 来指示您要转到根路径。例如,只需返回 root
this.router.navigate(['/'])
事实证明,在传递到模式窗口的组件中我编写了一个方法:
在 ngOndestroy 方法中,这导致路由行为不正确。现在一切正常。