Я читал о необязательных параметрах маршрута в Angular (https://angular.io/guide/router), которые похожи на параметры запроса, но в другом формате и другой области действия. Параметры запроса должны быть глобальными, а параметры матрицы - ограничиваться собственными параметрами. путь (как пространство имен).
Я проверял эту функцию в Angular, и у меня возникла следующая проблема.
Я определяю следующие маршруты:
const routes: Routes = [
{
path: '',
redirectTo: 'one',
pathMatch: 'full'
},
{
path: 'One',
component: OneComponent
},
{
path: 'two/test',
component: TwoComponent
}
];
Затем,в OneComponent
У меня есть эта функция, которую я вызываю в событии нажатия кнопки:
goToTwo() {
this.router.navigate(['/two/', {twoMatrix: 'twoMatrixValue'}, 'test', {testMatrix: 'testMatrixValue'}]);
}
В TwoComponent
:
ngOnInit() {
this.activatedRoute.params.subscribe(values => {
console.log(values);
});
}
Когда я нажимаю кнопку и перехожу к TwoComponentURL превращается в:
http://localhost:4200/two;twoMatrix=twoMatrixValue/test;testMatrix=testMatrixValue
Но когда я печатаю параметры activatedRoute
, извлекаются только параметры матрицы, связанные с последним путем (test
). Это выглядит так:
{testMatrix: "testMatrixValue"}
Я ожидаю, что параметры, связанные с «двумя», будут также извлечены и напечатаны.
Я тестировал с другой конфигурацией маршрутов, например:
const routes: Routes = [
{
path: '',
redirectTo: 'one',
pathMatch: 'full'
},
{
path: 'one',
component: OneComponent
},
{
path: 'two',
children: [
{
path: 'test',
component: TwoComponent
}
]
}
];
С этимдетский маршрут, это работакак и ожидалось. Я смогу извлечь все параметры из this.activatedRoute.params
.
Другое решение, которое я нашел для получения всех параметров, заключается в использовании URL-адреса activRoute this.activatedRoute.snapshot.url[0].parameterMap
. Последний вопрос: почему я не могу получить параметры с первой конфигурацией маршрута? Я подозреваю, что это потому, что маршрут two/test
действует как единое целое, но я не уверен.
Заранее спасибо.