1

我試圖導航到一個頁面後使用routerLink得到一個id,我可以得到。Angular 2路由 - 路由器RC3

問題是鏈接顯示爲'/ page; id = 10/component'。我想它顯示爲 '/頁/ 10 /組件'(未矩陣符號 - 沒有 'ID =')

在我app.routes.ts:

@RouterConfig = [ 
    { path: 'page/:id/component', component: MyComponent, data: {id: 'item.id'} } 
]; 

在我的網頁:

<a [routerLink]="['page', {id: item.id}, 'component']"> 

我正在使用最新的Angular 2路由器組件(RC3 Beta 2)。

任何人都知道我在做什麼錯了?提前致謝。

回答

1

這應該是:

<a [routerLink]="['page', {'id': item.id}, 'component']"> 

代替:

<a [routerLink]="['/page', item.id, 'component']"> 
+0

謝謝。我嘗試過,但仍然得到相同的東西... – Netwraith

+0

我在我正在做的應用程序中做同樣的事情。也許你在其他地方有錯誤。確保你的組件指令列表中有ROUTER_DIRECTIVES。 – Yhlas

+0

奇怪。我的指令列表中也有路由器指令。 – Netwraith

0

試試這個

<a [routerLink]="['page', item?.id, 'component']"> 
+0

謝謝。試了一下,但得到'無法讀取屬性'toString的'未定義'的錯誤,可能是指'項目'。我通過服務獲取項目,並在頁面的其他位置顯示另一個屬性。 – Netwraith

+0

嘗試添加elvis操作符,建議在我更新的答案 –

+0

嗯,試過,仍然沒有運氣:同樣的錯誤 – Netwraith

0

從我所看到的,該路由配置不起作用:

{ path: 'page/:id/component', component: MyComponent, data: {id: 'item.id'} } 

我認爲你真正需要問的是如果最終'/component'是必要的。如果是這樣,您可能需要考慮添加一個child route

另一種選擇是改變路線順序,改爲使用page/component/:id。我相信routerlink指令將你的URL搜索參數附加到路由的末尾,所以這應該起作用。

同樣,最簡單的解決方案是從路由配置中刪除'/component'