路由angular2时的可选参数

时间:2016-03-19 06:34:25

标签: routing angular routeparams

如何在angular2.my路由配置的路由中定义可选参数,如下所示:

<a [routerLink]="['../abc',{xyz: blabla}]">
     and 
<a [routerLink]="['../abc']">

{ path: '/abc/:xyz', component: abc, name: 'abc' },  // Here i want xyz as optional perameter

所以问题是每当我使用参数blabla的第一个方法时,它工作正常,因为在路由时我已经定义了参数xyz     但在第二种方法的情况下,我不想发送参数,所以URL变为

http://localhost:8080/#/sideNav/abc/

这是第一次罚款,但刷新页面后没有显示整个窗口变得空白,没有内容。 那么有什么方法可以在angular2中路由时提供可选参数。

i have also tried without defining parameters like this

{ path: '/abc', component: abc, name: 'abc' }

但如果xyz的值为1,则会将1转换为true

2 个答案:

答案 0 :(得分:6)

您可以定义具有和不具有相同组件的参数的多个路径:

@RouteConfig([{
  path: '/abc',
  component: Abc,
  name: 'abc'},
{
  path: '/abc/:xyz',
  component: Abc,
  name: 'abcXyz'
}])

然后使用你需要的那个

<a [routerLink]="['/abcXyz',{xyz: blabla}]">
     and 
<a [routerLink]="['/abc']">

如果routeCongig位于您的根文件中,请在根名称之前使用/,如果它位于第二级或其他位置,请使用

<a [routerLink]="['/parentRoot', {parentParams:value}, '/abc']">

答案 1 :(得分:0)

你可以将两者放在一起,

@RouteConfig([
    { path: '/abc/:xyz', component: Abc,  name: 'abc' }
    { path: '/abc', component: Abc, name: 'abc' },
])

如果这不按预期工作,您应该在下面看到,

Optional routeparams #3525
https://github.com/angular/angular/issues/3525