Angular 7 - матричные параметры в середине URL - PullRequest
0 голосов
/ 28 октября 2019

Я читал о необязательных параметрах маршрута в 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 действует как единое целое, но я не уверен.

Заранее спасибо.

...