iT邦幫忙

0

angular router params 與 children 設定

angular在設定router時如果想讓他帶參數或不帶參數都可以,可以設成兩個路徑,但在加入路由後就變得有點不知道怎麼設定

假定我有個router a:

{ path: 'a', component: a}
{ path: 'a/:id', component: a}

他可以帶id或不帶id都會導向componenta,

但如果有子網路的問題:

{ path: 'a', , component: a, childern:[
    {path: 'b', component: b},
    {path: 'c', component: c}
]}
{ path: 'a/:id', component: a, childern:[
    {path: 'b', component: b},
    {path: 'c', component: c}
]}

變成說我可能要定義兩遍?有其他的解法或其他設計嗎?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Homura
iT邦高手 1 級 ‧ 2018-09-05 11:58:42
最佳解答

下面這段不需要

{ path: 'a', , component: a, childern:[
{path: 'b', component: b},
{path: 'c', component: c}
]}

然後全部用使用有ID的PATH

在設定一個無ID的狀態
例如
path=a/-1/b
a.component裡面判斷-1為無ID
然後頁面在呈現成無ID的頁面

看更多先前的回應...收起先前的回應...
Zaku iT邦新手 3 級 ‧ 2018-09-05 15:50:54 檢舉

我目前就是component有判斷a/-1/b,之間的值,但我希望它連線a/b時也連的到,所以才寫了兩種,但有childern的時候就麻煩了

Homura iT邦高手 1 級 ‧ 2018-09-05 16:07:45 檢舉

Zaku
就是只要a/:id/b就行了
:id= -1
走的就是你說上面的那種寫法

{ path: 'a', , component: a, childern:[
{path: 'b', component: b},
{path: 'c', component: c}
]}

所以只要保留下面這個就行

{ path: 'a/:id', , component: a, childern:[
{path: 'b', component: b},
{path: 'c', component: c}
]}

Zaku iT邦新手 3 級 ‧ 2018-09-05 16:56:40 檢舉

這樣連a/b的時候router無法判別?我的意思是說我希望他連a/b的後也可以連到,不用a/-1/b

Homura iT邦高手 1 級 ‧ 2018-09-05 17:11:14 檢舉

Zaku
連到a/-1/b=a/b
所以沒有:id的Router可以不用寫了....
你都是同樣的組件
所以組件裡一定會有判斷是否有:id吧...

Zaku iT邦新手 3 級 ‧ 2018-09-05 17:16:45 檢舉

這樣嗎...,晚點試試。是同樣的component,只是不知道router怎麼設。我ab中間其實不只一個參數,可能會是a/:c/:d/:e/:f/b,還是我用pathMatch: 'full'的差異

Zaku iT邦新手 3 級 ‧ 2018-09-06 09:56:58 檢舉

大大不work阿,無法匹配這樣的router,可否打個簡單案例

Zaku iT邦新手 3 級 ‧ 2018-09-06 09:58:24 檢舉

我的意思是我沒有ID的時候不會連結到a/-1/b,會連到a/b

Zaku iT邦新手 3 級 ‧ 2018-09-06 10:18:36 檢舉

是因為要設一個預設狀態,沒參數的時候會redirectTo到a/b,不然參數一多的時候很可怕,像是a/:c/:d/:e/:f/b,那網址可能就變成a/-1/-1/-1/-1/b

Homura iT邦高手 1 級 ‧ 2018-09-06 10:31:02 檢舉

那我可能要找時間做做看了XD
目前只能想到這樣
可能有更好的做法/images/emoticon/emoticon16.gif

Zaku iT邦新手 3 級 ‧ 2018-09-06 15:07:37 檢舉

恩感謝大大我暫時放棄了,router可能不能這樣讓我玩= =,用大大的解法吧

我要發表回答

立即登入回答