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