Как загрузить детский асинхронный с angular-router-loader
У меня есть структура папок, как:
- app
-core
-vacancy
в core
папка у меня есть app.routing.ts
где я хотел бы асинхронно добавить маршрут к вакансии.
Я сделал это так:
export const routing = RouterModule.forRoot([
{
path: '',
component: HomeComponent,
canActivate: [AuthGuard]
},
{
path: 'vacancy',
loadChildren: '../vacancy#VacancyModule'
},
{
path: '**',
component: NotFoundComponent
}
], {useHash: true}
);
я получаю ошибку:
Не могу решить "..\ вакансия"
несмотря на то, что в папке есть папка вакансии app
а внутри вакансии есть файл vacancy.module.ts
который выглядит как:
// some imports here
@NgModule({
declarations: [
VacancyBaseComponent
],
imports: [
CommonModule,
FormsModule,
RouterModule.forChild(routes),
],
})
export class VacancyModule {
public static routes = routes;
}
Есть идеи, что я делаю не так?
2 ответа
Немного опоздал. Если вы еще не поняли, попробуйте это:
loadChildren: 'app/vacancy/vacancy.module#VacancyModule'
UPD: актуальное время 2022-12-26
В Angular версии 8 синтаксис строки для спецификации маршрута loadChildren устарел в пользуimport()
синтаксис. Вы можете выбрать отложенную загрузку на основе строк (loadChildren: './path/to/module#Module'
), включив маршруты с отложенной загрузкой в файл tsconfig, который включает файлы с отложенной загрузкой в компиляцию.
По умолчанию Angular CLI генерирует проекты с более строгим включением файлов, предназначенным для использования с синтаксисом import().
https://angular.io/guide/lazy-loading-ngmodules#create-a-feature-module-with-routing