在Angular 2中重定向不匹配的路由

时间:2016-01-20 17:36:59

标签: angular angular2-routing

我在Angular 2中寻找等效的$urlRouterProvider.otherwise

更多详情:

我有这样的路由器定义:

@RouteConfig([
  { path: "/", component: MultiPost, name: "Home", useAsDefault: true },
  { path: "/m/:collectionName/:categoryName/:page", component: MultiPost, name: "MultiPost" }
])

两条路线都运转良好,例如当我点击//m/sth/sth/0时,我得到了我想要的东西。

但是当我点击像/kdfsgdshdjf这样的随机网址时,没有任何反应。页面已呈现,<router-outlet>为空,因为没有路由匹配。

我想要做的是将所有不匹配的路由重定向到默认路由。我需要像$urlRouterProvider.otherwise("/");这样的东西。

有谁知道怎么做?

2 个答案:

答案 0 :(得分:6)

角度2中没有“其他”路线。但是使用通配符参数可以实现相同的功能,如下所示:

@RouteConfig([
    { path: '/', redirectTo: ['Home'] },
    { path: '/home', name: 'Home', component: HomeComponent },
    // all other routes and finally at the last add
    {path: '/*path', component: NotFound}

这只会加载'NotFound'组件,而url将与您导航到的相同。如果您希望所有不匹配的路由重定向到'404'网址,您可以执行以下操作:

//at the end of the route definitions
{ path: '/404', name: '404', component: PageNotFoundComponent },
{ path: '/*path', redirectTo:['404'] }

答案 1 :(得分:1)