每个特定页面的默认路由角度为5

时间:2018-04-26 11:39:42

标签: angular angular-router

我正在使用角度5,我不会添加默认的死记硬背,但是按照特定的页面。

例如,我有“登录”页面的这条路线:

  { path: 'log-in', component: LogInComponent }

我不会,如果用户会尝试不退出这样的网址:

log-in/3/4 
log-in/3/4/5
log-in/3/4/5/6

我将其重定向到“not-found-page 1 ”。

但是如果用户将尝试不退出与“登录”页面无关的网址。像这样:

registration/3/4
home/3/4

我将其重定向到“not-found-page 2

显然我不能用:

{ path: '**' }

因为它适用于所有页面。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用{ path: '**' }。但你必须看,路线是按正确的顺序定义的。

您可以使用componentless定义child routes路由,路径为空路径,如下所示:

{ path: 'log-in', children: [
  {path : '' , component: LogInComponent }
  {path : '**' , component: notFoundPage1 }
]},
... other routes
{ path : '**' , component: notFoundPage2 }

这种方式/log-in将被定向到LogInComponent,因为如果/log-in之后没有任何内容,则将在那里路由空子路由。 log-in/*的所有其他路由都将路由到notFoundPage1,因为第二条路径是匹配的。

/log-in无关的所有路线都将路由到notFoundPage2

注意:此配置中的顺序非常重要。如果需要,您甚至可以定义其他子路由。但是path: '**'必须在最后才能捕获所有未定义的子路由。

答案 1 :(得分:1)

我认为您可以像这样使用您的配置

{ path: 'log-in', component: LogInComponent }
{ path: 'log-in/:id/:anotherID', component: notFoundPage1 }
{ path: 'unKnownRoute', component: notFoundPage2 }

PS:仅当您有一些特定的条件

时才有效