Как добиться маршрутизации вложенных компонентов angular2 без дополнительной косой черты в URL-адресе

Я создаю одностраничное приложение с использованием angular2, и ему необходимо отображать другой шаблон приложения в зависимости от маршрутизации приложения. На самом высоком уровне он должен иметь возможность переключаться между шаблоном основного приложения и шаблоном администратора приложения.

Правила маршрутизации:

  • Если путь URL-адреса начинается с /auth, то он обрабатывается приложением AuthApp.
  • Если он начинается с чего-то другого, то он должен обрабатываться MainApp.

Реализация:

Для этого у меня есть компонентное приложение на самом высоком уровне, которое делегирует ответственность либо AuthApp, либо MainApp, например.

@RouteConfig([
  {
    path: '/auth/...',
    component: AuthApp,
    as: 'Auth'
  },
  {
    path: '/...',
    component: MainApp,
    as: 'Main'
  }
])

Затем каждое вспомогательное приложение (например, AuthApp, MainApp) имеет свои собственные определения маршрута, такие как это.

@RouteConfig([
  { path: '/current-vacancies', CurrentVacancies, as: 'CurrentVacancies', useAsDefault: true },
  { path: '/candidates/create', CandidateCreate, as: 'CandidateCreate'},
  ...
])

Функционально и с точки зрения дизайна это работает отлично!

Проблема:

В основном приложении, где конфигурация маршрута приложения не указывает путь (например, /... => MainApp), мне не нужен вложенный URL-адрес. Например, если вы переходите через приложение (routerLink) к CurrentVacances, оно обновляет URL-адрес и добавляет в начало нежелательную косую черту. Путь URL-адреса теперь выглядит так .../#//current-vacancies, когда я хочу, чтобы он читался как .../#/current-vacancies.

Реальная маршрутизация приложений работает, когда вы набираете .../#/current-vacancies в адресной строке, она переходит правильно. Тем не менее, навигация через директиву routerLink приложений добавляет нежелательную косую черту.

Я логически понимаю, почему это происходит, корневой компонент, который делегирует MainApp, имеет путь «/», и он объединяется вместе с дочерними компонентами, чтобы сформировать полный путь URL. НО в этом случае не желательно иметь дополнительную косую черту. Любые идеи, как я могу удалить его или как-то переопределить это поведение.

Кстати, я подумал о переносе маршрутизации компонента MainApp на самый верхний уровень, и хотя это действительно решает проблемы с путями URL, о которых я сообщаю, это не позволяет мне переключать шаблоны на верхнем уровне.

Вкратце

Пожалуйста, помогите мне с

  • как удалить нежелательные / на основных маршрутах приложений "preferred option" или
  • как спроектировать приложение, чтобы оно имело переключаемые шаблоны верхнего уровня с маршрутизацией вложенных компонентов.

Спасибо


person Jonathan Miles    schedule 31.12.2015    source источник
comment
Для этой проблемы есть запрос на включение.   -  person Eric Martinez    schedule 31.12.2015
comment
Этого достаточно для меня, надеюсь, это войдет в следующую бета-версию. Рад подождать немного, так как я понимаю, что это все довольно новое.   -  person Jonathan Miles    schedule 31.12.2015


Ответы (1)


Это работает сегодня (Angular 4) и, похоже, было исправлено до выпуска финальной версии Angular 2.

person Cobus Kruger    schedule 26.07.2017