Ошибка маршрутизации в angular при определении маршрутизации с параметром - PullRequest
1 голос
/ 23 апреля 2020

У меня есть два таких маршрута, как это

children: [
                            {
                                path: 'Templates', component: TemplatesComponent
                            },
                            {
                                path: 'AddEditTemplate/:id', component: AddTemplatesComponent
                            }]

У меня есть кнопка «Отмена» в представлении AddTemplatesComponent

<a class="btn btn-default no-margin" [routerLink]="['../Templates']">Cancel</a>

Но нажатие на кнопку «Отмена» не приводит к переходу к компоненту «Шаблоны» и URL изменился с "/ AddEditTemplate / 5" на "/ AddEditTemplate / Templates". Но URL должен измениться на "/Templates".

Что я делаю не так? пожалуйста, помогите.

1 Ответ

0 голосов
/ 23 апреля 2020

На самом деле вам нужно go до 2 маршрутов в пути. Например, предположим, что вы на root/AddEditTemplate/2. Если вы go до 1 маршрута в пути, вы будете на root/AddEditTemplate. Итак, чтобы снова войти в root и перейти к root/Templates, вам нужно go до 2 маршрутов в пути:

<a class="btn btn-default no-margin" [routerLink]="['../../Templates']">Cancel</a>

Оформить это Stackblitz demo => focus просто в файлах внутри папки module-1.

[ОБНОВЛЕНИЕ]: Если вы хотите перемещаться программно, вы можете использовать navigate метод Router с 2 аргументами: тот же маршрут, что и выше, и параметры конфигурации, содержащие атрибут relativeTo, указывающий текущий маршрут в качестве начальной точки для расчета относительных путей. Согласно документам : Если стартовый маршрут не указан, навигация будет абсолютной .

constructor(
  private _router: Router,
  private _activatedRoute: ActivatedRoute
) {}

...

_navigate() {
  this._router.navigate(['../../Templates'], {
    relativeTo: this._activatedRoute
  });
}
...