我在我的應用程序中有localhost/opportunity/:id/volunteers
的路線。我想構建一個routerLink
以導航到同一級別上的不同頁面(即localhost/opportunity/:id/waitlist
)。按照API documentation for Routerlink
中列出的選項,我得到的印象是routerLink="./volunteers"
應該鏈接到我目前所在的同一頁面上的routerLink
。因此,routerLinkActive
爲routerLink="./volunteers"
應指示鏈接處於活動狀態。不過,這並不這樣做...Angular2:只更新路線的最後一段
相關的路線是這樣的:
const routes: Routes = [
{
path: 'opportunity',
children: [
{
path: ':id',
children: [
{
path: 'volunteers',
component: VolunteersComponent
},
{
path: 'waitlist',
component: WaitlistComponent
},
{
etc . . .
}
]
}
]
}
];
的routerLink="./volunteers"
似乎導航到localhost/volunteers
,它不存在。我也試過routerLink="../../volunteers"
,routerLink="../volunteers"
,routerLink="././volunteers"
等形式的鏈接(他們也不行,不是我認爲他們會這麼做)。
關於我在做什麼的任何建議是錯誤的?很明顯,我可以從鏈接中手動提取:id
並插入它(類似routerLink="['opportunity', extractedId, 'volunteers']"
),但感覺像是錯誤的方式,我不想在我的應用程序中手動提取:id
。我似乎可能只是在做錯事。我搜索了S.O.一段時間,但還沒有找到這個問題的答案。
小編輯:讓我也說這個模塊直接加載到根模塊。
UPDATE:
當我嘗試routerLink="../"
,它顯示了localhost/opportunity/:id/volunteers
網址爲活躍,但點擊鏈接把我帶回到主頁(即localhost/
)。我很確信我的路由器只認爲我的應用中有一個子級別(即localhost/opportunity/:id/volunteers
和localhost/calendar
似乎都是localhost
的直接子代,而localhost/opportunity/:id/volunteers
應該是localhost/opportunity/:id
的直接子代。是否需要加載路由通過router
的forChild()
方法爲router
查看它作爲一個孩子嗎?換言之,有可能是因爲這個模塊的所有路由都加載在相同的forChild()
塊中,它們被視爲同一級別的孩子
感謝您的回覆!我試過了。它不起作用。它絕對看起來應該是這樣,這就是爲什麼我包括我的路線,以防我有一些配置,我錯過了? – John
好吧,這很奇怪。你的問題促使我嘗試一個'routerLink =「../」'。這個routerLink顯示爲'localhost/opportunity /:id/volunteers' url的激活狀態,但是*鏈接上的*點擊會讓我回到主頁(只是'localhost /')。我相當確信我的路由器只認爲我的應用中有一個子級(即'localhost/opportunity /:id/volunteers'和'localhost/calendar'都是'localhost'的直接子節點。期望'localhost/opportunity /:id/volunteers'是'localhost/opportunity /:id'的子節點。 – John