Смешивание компонентов и модулей в угловой трассировке

Я работаю над устаревшим угловым приложением и постепенно обновляю его до ng v9. В настоящее время у меня есть такая конфигурация маршрутизации, которая загружает только компоненты, но я хотел бы перейти к модулям, начиная с этого момента.

Вот как выглядит мой текущий файл маршрутизации

const routes = [
  {path: 'home', component: HomeComponent, canActivate:[routeGuard]},
  {path: '', redirectTo: 'home', pathMatch: 'full'},
  {path: 'settings', loadChildren: () => import('path_to_import').then(mod => mod.SettingsModule)}
]

и из компонента, где я пытаюсь перемещаться по нему просто так -

<span routerLink="settings"></span>

Как ни странно, когда я нажимаю на настройки на странице, меня перенаправляет на «/settings/home», что не является предполагаемым поведением.

Но когда я изменяю модуль для загрузки как компонент, подобный этому -

const routes = [
  {path: 'home', component: HomeComponent, canActivate:[routeGuard]},
  {path: '', redirectTo: 'home', pathMatch: 'full'},
  {path: 'settings', component: SettingsComponent}
]

он работает идеально. поэтому я не уверен, почему здесь загрузка модуля имеет значение.

Любая помощь приветствуется!


person Super Test    schedule 25.06.2020    source источник
comment
у вас есть второй модуль маршрутизации для вашего модуля настроек? или какие-то маршруты внутри него определены?   -  person Adel    schedule 25.06.2020
comment
нет у нас нет   -  person Super Test    schedule 25.06.2020
comment
Что произойдет, если вы удалите redirectTo-Path? Или попробуйте поставить settings-path на первое место.   -  person Adel    schedule 25.06.2020
comment
случай 1. без перенаправления - как и ожидалось, когда мы нажимаем корневой путь, он пуст и ничего не происходит, а также когда я перехожу к / settings, настройки также не загружаются, но происходит навигация, и /home не добавляется случай 2. когда я перешел настройки выше хоум, никакого эффекта - все так же. /settings добавит /home, что приведет к /settings/home   -  person Super Test    schedule 25.06.2020


Ответы (1)


Вам также необходимо иметь маршрутизацию для вашего модуля настроек. Что и решит дальнейшую маршрутизацию проекта.

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

const routes = [
{path: 'home', component: HomeComponent, canActivate:[routeGuard]},
{path: '', redirectTo: 'home', pathMatch: 'full'},
{path: 'settings', loadChildren: './settings/settings.module#SettingsModule'}
]

Я не знаю путь к вашему модулю настроек. Вы, пожалуйста, исправьте в соответствии с вашим путем. а также определить файл маршрутизации для модуля настроек.

person Minal Shah    schedule 25.06.2020