Необязательные параметры при маршрутизации 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