У нас была похожая проблема, и мы обрабатывали ее, используя маршруты в качестве «окружающих» констант.
Вот это наш app.routing.ts
import {appRoutes} from "../environments/general/approutes"; <----THAT'S IT
@NgModule({
imports: [
CommonModule,
BrowserModule,
RouterModule.forRoot(appRoutes, {useHash: true})
],
exports: [
],
})
export class AppRoutingModule { }
Общая папка в environemnt хранит константы среды и файл, который
будет использоваться для режима разработки.
Итак, у нас есть файл approutes.ts в каталоге / environment / general / approutes
..Omissis imports...
export const appRoutes: Routes =[
{
path: 'login', component: LoginComponent
},
{ path: '', component: FullPageLayoutComponent,
children: [
{ path: 'logged', loadChildren: '../../app/logged.module#LoggedModule' }
]
},
{ path: '', component: ComponentA,
children: [
{ path: 'pathA', loadChildren: '../../app/componentA.module#ComponentAModule' }
]
},
{
path: '**', component: NotFoundComponent
}
];
Затем у нас есть другой файл approutes.ts в / environment / prod / approutes
..Omissis imports...
export const appRoutes: Routes =[
{
path: 'login', component: LoginComponent
},
{ path: '', component: FullPageLayoutComponent,
children: [
{ path: 'logged', loadChildren: '../../app/logged.module#LoggedModule' }
]
},
{ path: '', component: ComponentA,
children: [
{ path: 'pathB', loadChildren: '../../app/componentB.module#ComponentBModule' }
]
},
{
path: '**', component: NotFoundComponent
}
];
Чем, очевидно, вам нужно настроить yor angular.json с помощью файловых заменителей для сред prod с чем-то вроде этого:
"prod":{
"fileReplacements": [
{
"replace": "src/environments/general/environment.ts",
"with": "src/environments/prod/environment.ts"
}, //For sure you will have different stuff in your environment const in dev and prod mode
{
"replace": "src/environments/general/approutes.ts",
"with": "src/environments/prod/approutes.ts"
}
]
}
Что будет?
То, что при запуске в режиме prod сначала произойдет замещение файла, а затем ваш app.routing.ts импортирует константу approutes для создания магии маршрутизации и загрузки, включая ленивый модуль.
При этом у вас могут быть разные маршруты и загруженный модуль в разных средах.
Этот подход можно использовать для создания различных приложений, использующих одни и те же базовые компоненты, обрабатывая их как отдельные среды, и все это в одном проекте, и я считаю его очень полезным
Надеюсь, это помогло