1

如何在 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

4

2 回答 2

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']">
于 2016-03-19T06:48:21.880 回答
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

于 2016-03-19T06:51:08.757 回答