2017-02-21 31 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