2017-02-21 69 views
0

我有以下通配符角通配符redirectTo不工作

const routes: Routes = [ 
    { 
     path: '', 
     children: [ 
      { 
       path: 'list/:id', 
       component: ListComponent 
      }, 
      { 
       path: 'view/:id', 
       component: ViewComponent 
      }, 
      { 
       path: 'edit/:id', 
       component: EditComponent 
      }, 
      { 
       path: '**', 
       redirectTo: 'list/:id', 
       pathMatch: 'full' 
      } 

     ] 
    } 
]; 

的:id是,我需要從後端獲取ID的佔位符。通配符不起作用(不重定向我的列表組件),給我以下錯誤

EXCEPTION: Uncaught (in promise): Error: Cannot redirect to 'list/:id'. Cannot find ':id'. 
Error: Cannot redirect to 'list/:id'. Cannot find ':id'. 

。任何想法的傢伙?提前致謝。

+0

它給你的錯誤,因爲你的通配符路由它找不到':id'的值。你可以做的是爲你需要定義'component'的通配符路由,在'component'裏面你可以從你的後端得到':id',並根據你的id從那個組件重定向到'list /:id'從後端返回 – ranakrunal9

+0

是啊..但我們如何解決這個問題?或者我該如何將id傳入路由器 – blackdaemon

回答

2

如果用戶輸入ANY無效路由,路由器應該如何知道您希望導航到哪個列表?

:id應該是0,33還是1337?路由器不知道!

唯一可行的方法是定義一個備用路由器沒有一個參數或定義一個:

{ 
    path: '**', 
    redirectTo: 'list/77', // put your fallback-id here !! 
    pathMatch: 'full' 
} 

更好的方式是創建一個網站,如404 error。顯示一條消息,如page not found,並把一些導航選項給用戶..也許概述所有列表或任何..

+0

想到404page。但不適用。我需要死於重定向到列表頁面。對不起,什麼是fallback-id的意思? – blackdaemon

+0

如果用戶導航到一些未定義的路線,則需要顯示一個DEFINED「list」.. idk您的應用,也許您可​​以顯示「list/0」..也許沒有要顯示的列表..它已經啓動給你! :) – mxii