为什么以下“路线”构造有效?

时间:2019-03-07 19:11:03

标签: angular

我的理解是,路线基于 “首先赢得比赛”的原则,因此,最具体的路线应放置在路线数组的开头,而最一般的路线应放在终点。

但是,在下面的代码(对我来说很好)上,它不是不是最通用的路由放在开头,然后接下来的两条路由的优先级更高,而第二条更具体吗?

  1. 为什么第一条路线不总是与每条路线都匹配(意味着其他路线从不匹配)?我以为空路径(path: '')匹配所有内容,因为所有路径都以''开头和结尾,但是我对此是否理解正确?

  2. 类似地,即使假设我们确实超过了path:'',为什么'search/'也不总是触发,却从未允许'search/:query'被匹配? (是因为pathMarch: 'full'吗?)。

非常感谢!

来自app.module.ts

const appRoutes: Routes = [
  { path: '', 
    component: HomePageComponent 
  },
  { path: 'search',      
    redirectTo: '/search/angular', 
    pathMatch: 'full' },
  {
    path: 'search/:query',
    component: GitSearchComponent,
    data: {title: 'Git Search'}
  },
  { path: '**', component: NotFoundComponent }
];

1 个答案:

答案 0 :(得分:0)

Crowdpleasr,当您有参数时,将应用该原理。想像一些

BrowserTest.exe ceridian

不起作用,因为uno / search与uno /:id匹配(因此您永远都无法到达OtherComponent)

pathMatch:“完整”用于重定向,因此只有“精确”值重定向到页面。 (就您而言,如果您未放置,则搜索/角度,搜索/其他以及搜索/另一个重定向)