Проблема с угловыми параметрами маршрута

#angular #angular8 #angular-components #angular-router

Вопрос:

У меня есть пара маршрутов, как показано ниже. Моя основная/базовая маршрутизация приложений выглядит следующим образом:

 const routes: Routes = [{
    path: 'projects',
    loadChildren: () => import('../app/pages/pages.module').then(m => m.PagesModule)
}]
 

Маршрутизация PagesМодуля выглядит следующим образом:

 const routes: Routes = [
    {
        path: ':projectId/model', component: ModelComponent
    },
    {
        path: ':projectId/compare/:id', component: CompareComponent
    }
    {
        path: ':projectId/serving/:id', component: ServingComponent
    }
]
 

Для компонента модели указан правильный URL-адрес, а именно: localhost:4200/проекты/123/модель

С 123 as :ProjectID и 1 as :id я хочу, чтобы URL-адрес для ServingComponent и CompareComponent был таким: localhost:4200/проекты/123/обслуживание/1 localhost:4200/проекты/123/сравнение/1

Что работает: навигация по HTML работает так:

  <button [routerLink]="['../compare', model.id]">Compare</button>
 

Вопрос:
Когда я перехожу из своего файла TS, он не работает. Попробовал с помощью ниже:

  this.router.navigate(['../compare', model.id]);
 

Не могли бы вы, пожалуйста, подсказать, что может быть не так? Нужно ли мне изменять свои маршруты ? Интересно, почему навигация по TS не работает, в то время как навигация работает с HTML. Пожалуйста, посоветуйтесь.

Ответ №1:

Если вы хотите использовать относительный путь, вам нужно добавить relativeTo атрибут следующим образом: this.router.navigate(['../compare'], {relativeTo: this.activatedRoute}); (добавьте также model.id параметр)

Более подробная информация: https://angular.io/guide/router#specifying-a-relative-route

Комментарии:

1. спасибо, что сработало для меня. Большое спасибо.

2. нет проблем, я рад, что смог помочь