Отсутствует URL-адрес маршрута родительского модуля в дочернем модуле
Новичок в Angular и попытка структурировать мой код в модулях. Я получил модуль администратора, отвечающий на
/ админ
запрос, и теперь я пытаюсь добавить еще один дочерний модуль к модулю администратора, под названием модуль портфолио.
Это работает, за исключением того, что я хочу модуль портфолио, чтобы ответить на
/ Администратор / портфель
запрос. Прямо сейчас это ответ на
/портфолио
запрос вместо
Здесь я импортирую модуль портфолио
admin.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AdminRoutingModule } from './admin-routing.module';
import { IndexComponent } from './shared/index/index.component';
import {PortfolioModule} from './portfolio/portfolio.module';
@NgModule({
declarations: [IndexComponent],
imports: [
CommonModule,
PortfolioModule,
AdminRoutingModule
]
})
export class AdminModule { }
Думая, что мне, возможно, нужно определить PortfolioModule как детский маршрут. внутри админ-маршрута.
админа routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { IndexComponent } from './shared/index/index.component';
const routes: Routes = [
{
path: 'admin',
component: IndexComponent,
children: [
{
path: 'portfolio',
/*Maybe add Portfolio Module here?*/
}
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AdminRoutingModule { }
Вот мой модуль портфолио, ничего особенного в этом нет.
portfolio.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { PortfolioRoutingModule } from './portfolio-routing.module';
import { IndexComponent } from './index/index.component';
import { CreateComponent } from './create/create.component';
import { ListComponent } from './list/list.component';
import { UpdateComponent } from './update/update.component';
@NgModule({
declarations: [IndexComponent, CreateComponent, ListComponent, UpdateComponent],
imports: [
CommonModule,
PortfolioRoutingModule
]
})
export class PortfolioModule { }
И, наконец, вот мой портфель маршрутизации, может быть, я что-то здесь упускаю, чтобы сказать, чтобы включить родительский маршрут.
Портфельный routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { IndexComponent } from './index/index.component';
import { ListComponent } from './list/list.component';
import { CreateComponent } from './create/create.component';
import { UpdateComponent } from './update/update.component';
const routes: Routes = [
{
path: 'portfolio',
component: IndexComponent,
children: [
{
path: 'list',
component: ListComponent
},
{
path: 'create',
component: CreateComponent
},
{
path: 'update',
component: UpdateComponent
}
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class PortfolioRoutingModule { }
1 ответ
При ленивой загрузке модуль корень пути должен находиться в маршрутизации модуля, который объявляет лениво загруженный модуль.
Например, path: 'portfolio'
будет объявлен в качестве маршрута в admin-routing.module
и ваш IndexComponent
за portfolio-routing.module
будет пустой путь (path: ''
). Так же children
Атрибут, вероятно, не является необходимым, поскольку все маршруты будут на одном уровне.
Ваш маршрут может выглядеть примерно так.
приложение-routing.module
...
const routes: Routes = [
{
path: 'admin',
loadChildren: './admin/admin.module#AdminModule'
}
]
...
админ-routing.module
...
const routes: Routes = [
{
path: '',
component: AdminIndexComponent
},
{
path: 'portfolio',
loadChildren: './portfolio/portfolio.module#PortfolioModule'
}
]
...
портфель-routing.module
...
const routes: Routes = [
{
path: '',
component: PortfolioIndexComponent
},
{
path: 'create',
component: PortfolioCreateComponent
}
]
...
Я также собрал работающий стек в этом примере, связанный ниже, вместе с угловым направляющим документом для модулей отложенной загрузки.