Angular 2可选的路由参数
是否有可能在Angular 2路由中有一个可选的路由参数? 我尝试了RouteConfig中的Angular 1.x语法,但收到下面的错误:
“原始exception:path”/ user /:id?“包含路由configuration中不允许的”?“。
@RouteConfig([ { path: '/user/:id?', component: User, as: 'User' }])
您可以使用和不使用参数定义多个路由:
@RouteConfig([ { path: '/user/:id', component: User, name: 'User' }, { path: '/user', component: User, name: 'Usernew' } ])
并处理组件中的可选参数:
constructor(params: RouteParams) { var paramId = params.get("id"); if (paramId) { ... } }
另请参阅相关的github问题: https : //github.com/angular/angular/issues/3525
信息是可选的时,build议使用查询参数。
路由参数或查询参数?
没有硬性规定。 一般来说,
比较喜欢路由参数
- 该值是必需的。
- 该值是区分一条path与另一条path所必需的。
比较喜欢查询参数
- 该值是可选的。
- 该值是复杂的和/或多variables的。
从https://angular.io/docs/ts/latest/guide/router.html#!#query-parameters
你只需要从pathpath中取出参数。
@RouteConfig([ { path: '/user/', component: User, as: 'User' }])
使用angular4我们只需要在层次结构中组织路线
const appRoutes: Routes = [ { path: '', component: MainPageComponent }, { path: 'car/details', component: CarDetailsComponent }, { path: 'car/details/platforms-products', component: CarProductsComponent }, { path: 'car/details/:id', component: CadDetailsComponent }, { path: 'car/details/:id/platforms-products', component: CarProductsComponent } ];
这对我有用。 这样路由器就知道基于option id参数的下一个路由是什么。
Angular 4 – 解决可选参数sorting的解决scheme:
做这个:
const appRoutes: Routes = [ {path: '', component: HomeComponent}, {path: 'products', component: ProductsComponent}, {path: 'products/:id', component: ProductsComponent} ]
请注意,“products”和“products /:id”路线的命名完全相同。 Angular 4会正确地跟随没有参数的路由的“产品”,如果一个参数跟随“products /:id”。
但是,非参数路由“产品”的path不能有斜线,否则会被错误地视为参数path。 所以在我的情况下,我有产品的尾部斜线,它不工作。
不要这样做:
... {path: 'products/', component: ProductsComponent}, {path: 'products/:id', component: ProductsComponent}, ...