Необязательные параметры при маршрутизации angular2

Как определить необязательные параметры в маршрутизации конфигурации маршрутизации 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: // локальный:8080/#/sideNav/ а /

который нормально загружается в первый раз, но после обновления страницы ничего не показывает, что все окно становится пустым без содержимого. так же есть какой-нибудь метод для предоставления необязательных параметров при маршрутизации в angular2.

i have also tried without defining parameters like this

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

но это выдаст ошибку в случае значения xyz 1 это конвертирует 1 в true

2 ответа

Решение

Вы можете определить несколько маршрутов с и без параметра, имеющих один и тот же компонент:

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

а затем используйте тот, который вам нужен

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

Если routeCongig находится в вашем корневом файле, используйте / перед именем root и если он находится на втором уровне или что-то еще, используйте

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

Вы можете положить оба вместе,

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

если это не работает, как вы ожидаете, вы должны увидеть ниже,

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

Другие вопросы по тегам