У меня есть приложение с выходом маршрутизатора, в котором я хочу лениво загрузить модули со своими собственными под-маршрутами.
Это должно дать маршруты:
/
/lazy1/child1
/lazy1/child2
in модуль приложения root, я определяю некоторые маршруты, которые будут загружать дочерний модуль
export const routes: Routes = [
{path:'', component: HelloComponent},
{path: 'lazy1', loadChildren: () => import('./lazy1-module/index').then(mod => mod.Lazy1Module)}
];
, а в модуле Lazy1Module следующие маршруты
const routes: Routes = [
{path: 'child1', component: Child1Component},
{path: 'child2', component: Child2Component},
{path: '**', redirectTo: 'child1'}
];
, которые я добавляю с помощью RouterModule .forChild (маршруты) как обычно.
Кажется, это работает нормально, и когда я go в / lazy1 / child1, это разрешается нормально.
Однако, когда я пытаюсь перемещаться между Чайлдс, я сталкиваюсь с неприятностями. Поскольку модуль с отложенной загрузкой сам по себе не должен знать или заботиться о маршрутах вне себя, я предполагаю, что я мог бы перейти от child1 к child2, используя
this.router.navigate(["child2"]);
Это приводит к ошибке «маршрут не найден» .
Я могу заставить его работать, добавив
this.router.navigate(["child2"], { relativeTo: this.route.parent });
Но это кажется неправильным. также "../child2" не работает.
При добавлении регистрации в маршрутизатор, кажется, что он добавляет "/" перед маршрутом и начинает разрешать его из root, также не обращая внимания на любые точки .
Я использую Angular 8.2.14
Пример Stackblitz здесь: https://stackblitz.com/edit/angular-bqdchr