Относительные пути не работают с routerLink в Angular 6 - PullRequest
0 голосов
/ 10 октября 2018

У меня проблемы с приложением Angular, которое я создаю.Я заметил, что в приложениях использование относительных путей с routerLink не работает.Он не выдает ошибку и не переходит на неправильную страницу, он просто ничего не делает;Я проверил это, пытаясь перейти к компонентам корневого уровня, а также к детям с тем же результатом.Если, однако, я использую абсолютные пути, он просто отлично справляется.

Я действительно почесываю этот вопрос и не могу найти аналогичную проблему в SO и т. Д., Поэтому мне просто нужно знатьс чего начать поиск.

Редактировать : работает, оно добавляется один раз при первой загрузке приложения, если это первая ссылка, по которой вы нажали, но больше никогда.

Обновление : Как и предполагалось, я воссоздал проблему в StackBlitz.Пожалуйста, перейдите по этой ссылке и прочитайте комментарии в nav-component.component.html.

Например, первая ссылка в этом меню ничего не делает, но все остальные работают как положено;и снова я проверил это на каждой ссылке в приложении с одинаковыми результатами:

<div class="list-group menu-list-group">

  <a routerLink="./artists-profiles"
     class="list-group-item btn btn-primary"
  (click)="artistsMenuChoice('artist-profiles')">
    Artist Profiles
  </a>

  <a [routerLink]="['/artists/artist-videos']"
     class="list-group-item btn btn-primary">
    Videos
  </a>

  <a [routerLink]="['/artists/artist-endorsement']"
     class="list-group-item btn btn-primary">
    Get Endorsed
  </a>

</div>

<hr>

<div class="list-group menu-list-group">

  <a href="#" class="list-group-item btn btn-primary">
    Shopping Cart
  </a>

  <a href="#" class="list-group-item btn btn-primary">
    {{ menuCredAction }}
  </a>

</div>

Вот мой модуль маршрутизации приложений:

const appRoutes: Routes = [
  { path: 'home', component: HomeComponent},
  { path: 'artists', component: ArtistsComponent, children: [
      {path: '', component: ArtistsStartComponent},
      {path: 'artist-profiles', component: ArtistProfilesComponent},
      {path: 'artist-videos', component: ArtistVideosComponent},
      {path: 'artist-endorsement', component: ArtistsGetEndorsedComponent},
    ] },
  { path: 'about', component: AboutComponent, children: [
      {path: '', component: AboutStartComponent}
    ] },
  { path: 'shop', component: ShopComponent },
  { path: 'contact', component: ContactComponent },
  { path: 'auth', component: AuthComponent },
];

@NgModule({
  imports: [
    RouterModule.forRoot(appRoutes)
  ],
  exports: [
    RouterModule
  ],

})
export class AppRoutingModule {

}

1 Ответ

0 голосов
/ 10 октября 2018

Маршрутизация выполняется на основе «дерева» конфигурации маршрутизатора, которое не обязательно соответствует пути URL.

В зависимости от того, где размещен предоставленный вами HTML-код, относительный путь может отличаться, даже если URL-адрес совпадает.Простой способ отладки этого - зарегистрировать ActivatedRoute.url или ActivatedRoute.routeConfig в компоненте, где находится ссылка.

Ссылка на цитату в выпуске github

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...