为什么我的路由器导航功能在 angular 8 中不起作用?

Why my router navigate function doesn't work in angular 8?

我正在尝试像这样重定向到另一个组件:

主页组件

  checkUrl(reference) {   
    if (reference != this.ref) {
      this.router.navigate(['/еrror']);
    }
  }

这是我的路由器模块

const routes: Routes = [
  { path: '', component: DefaultComponent },
  {
    path: '',
    children: [
      { path: ':dlr/:id/:ref', component: HomeComponent },
      { path: 'error', component: ErrorPageComponent },
    ]
  },
  { path: '**', redirectTo: '', pathMatch: 'full' }

];

现在我在 HomeComponent 中,想转到错误页面。

this.router.navigate(['/еrror']) 这导致我进入 DefaultComponent

 this.router.navigate(['/error'], { relativeTo: this.activatedRoute });

添加 relativeTo 它对我有用。

向先前删除的答案添加详细信息 -

因为它是 child 到 child 的导航,您可以尝试添加 relativeTo: this.activatedRoute 标签。您可以在文档中的 relativeTo 此处找到有关其语法和用法的更多信息。这基本上类似于我们在尝试指定文件路径时通常用于导航的“../”类型的符号。

因此,您可以尝试这样的操作 - this.router.navigate(['/еrror'], {relativeTo: this.activatedRoute});.

此外,这里要注意的一件事是,如果您将使用 ['еrror'] 而不是这个 ['/error'],导航可能会有所不同。例如,如果您当前在这里 - parent/abc/c1(其中 c1 是 child 组件)并且您使用 ['error'](其中 'error' 是 child 组件与 c1 相同 parent),URI 将变为 parent/abc/c1/error,而如果您将使用 ['/error'],您将首先向上移动一级 parent/abc/,然后是另一个 child 将添加 - parent/abc/error.

这里还描述了其他一些方法 - 除了我上面描述的方法,请看一看。 希望这有帮助。