Angular - 重定向到具有不同参数的相同组件

Angular - redirect to same component with different parameter

所以在 angular 中我嵌套了路由,假设:

domain.com/dashboard/list/:listId/:listName/details/:detailsName/:detailsId

现在,在 details 页面上,我还有一个小组件,与我在 list 页面上的列表类似,这也是我想将用户重定向到相同的 details 组件,但参数不同。

所以让我们从 :

domain.com/dashboard/list/1/test_list_name/details/test_details_name/4

domain.com/dashboard/list/1/test_list_name/details/another_test_details_name/8

路由器链接:

<h5 [routerLink]="['details', id, name]"></h5>

不幸的是,我总是被重定向到 /dashboard。我也尝试将 routeReuseStrategy 设置为 false。但没有成功。

我做错了什么?

@编辑,stackblitz:

https://stackblitz.com/edit/angular-q8fasa

在 stackblitz 示例中,我只想从第二个仪表板组件打开另一个第二个仪表板组件(具有不同的参数)。在这个例子中我只使用了一个嵌套路由,但是问题是完全一样的。

抱歉,举个丑陋的例子,但我相信你会理解我的问题。

使用 RouterModule.forRoot(routes, { enableTracing: true }),我在控制台中看到以下内容:

Event: NavigationEnd NavigationEnd(id: 3, url: '/dashboard/dashboard-second/original-name-something-bla-bla/87/dashboard-second/other-name/11', urlAfterRedirects: '/dashboard') NavigationEnd {id: 3, url: "/dashboard/dashboard-second/original-name-something-bla-bla/87/dashboard-second/other-name/11", urlAfterRedirects: "/dashboard"}

所以它有 dashboard-second 两次。

我不得不将路由器链接更改为:

<h5 [routerLink]="['../../../../dashboard-second', 'other-name', 11]" >Go to dashboard-second 1</h5> 

它解决了这个问题。 4..就是回到/dashboard。每个 .. 转到:

  1. 87(即:/87/.. = /87)
  2. original-name-something-bla-bla
  3. 仪表板秒
  4. /仪表板

有点不直观,需要4个..,我还以为要3个呢,其实也有道理,因为是相对的。所以你最终做了:

/dashboard/dashboard-second/original-name-something-bla-bla/87/../../../../dashboard-second/other-name/11

解析为:

/dashboard/dashboard-second/other-name/11

您还可以设置绝对路径,但需要注意的是,如果您移动路由 /dashboard-second,则更有可能在使用绝对路径时必须更新 routerLink:

<h5 [routerLink]="['/dashboard/dashboard-second', 'name-name-name', 13]" >Go to dashboard-second 3</h5>