MOBILE-3320 routes: Refactor module routes config
parent
de38835518
commit
acefa8c35a
|
@ -33,9 +33,7 @@ const mainMenuHomeSiblingRoutes: Routes = [
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
CoreMainMenuTabRoutingModule.forChild({
|
CoreMainMenuTabRoutingModule.forChild(mainMenuHomeSiblingRoutes),
|
||||||
siblings: mainMenuHomeSiblingRoutes,
|
|
||||||
}),
|
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,13 +22,27 @@ function buildAppRoutes(injector: Injector): Routes {
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ModuleRoutes = { children: Routes; siblings: Routes };
|
export type ModuleRoutes = { children: Routes; siblings: Routes };
|
||||||
|
export type ModuleRoutesConfig = Routes | Partial<ModuleRoutes>;
|
||||||
|
|
||||||
export function resolveModuleRoutes(injector: Injector, token: InjectionToken<Partial<ModuleRoutes>[]>): ModuleRoutes {
|
export function resolveModuleRoutes(injector: Injector, token: InjectionToken<ModuleRoutesConfig[]>): ModuleRoutes {
|
||||||
const routes = injector.get(token, []);
|
const configs = injector.get(token, []);
|
||||||
|
const routes = configs.map(config => {
|
||||||
|
if (Array.isArray(config)) {
|
||||||
|
return {
|
||||||
|
children: [],
|
||||||
|
siblings: config,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
children: CoreArray.flatten(routes.map(r => r.children || [])),
|
children: config.children || [],
|
||||||
siblings: CoreArray.flatten(routes.map(r => r.siblings || [])),
|
siblings: config.siblings || [],
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
children: CoreArray.flatten(routes.map(r => r.children)),
|
||||||
|
siblings: CoreArray.flatten(routes.map(r => r.siblings)),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,14 +14,14 @@
|
||||||
|
|
||||||
import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';
|
import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';
|
||||||
|
|
||||||
import { ModuleRoutes } from '@/app/app-routing.module';
|
import { ModuleRoutesConfig } from '@/app/app-routing.module';
|
||||||
|
|
||||||
export const MAIN_MENU_ROUTES = new InjectionToken('MAIN_MENU_ROUTES');
|
export const MAIN_MENU_ROUTES = new InjectionToken('MAIN_MENU_ROUTES');
|
||||||
|
|
||||||
@NgModule()
|
@NgModule()
|
||||||
export class CoreMainMenuRoutingModule {
|
export class CoreMainMenuRoutingModule {
|
||||||
|
|
||||||
static forChild(routes: Partial<ModuleRoutes>): ModuleWithProviders<CoreMainMenuRoutingModule> {
|
static forChild(routes: ModuleRoutesConfig): ModuleWithProviders<CoreMainMenuRoutingModule> {
|
||||||
return {
|
return {
|
||||||
ngModule: CoreMainMenuRoutingModule,
|
ngModule: CoreMainMenuRoutingModule,
|
||||||
providers: [
|
providers: [
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
import { InjectionToken, Injector, ModuleWithProviders, NgModule } from '@angular/core';
|
import { InjectionToken, Injector, ModuleWithProviders, NgModule } from '@angular/core';
|
||||||
import { Route, Routes } from '@angular/router';
|
import { Route, Routes } from '@angular/router';
|
||||||
|
|
||||||
import { ModuleRoutes, resolveModuleRoutes } from '@/app/app-routing.module';
|
import { ModuleRoutesConfig, resolveModuleRoutes } from '@/app/app-routing.module';
|
||||||
|
|
||||||
export const MAIN_MENU_TAB_ROUTES = new InjectionToken('MAIN_MENU_TAB_ROUTES');
|
export const MAIN_MENU_TAB_ROUTES = new InjectionToken('MAIN_MENU_TAB_ROUTES');
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ export function buildTabMainRoutes(injector: Injector, mainRoute: Route): Routes
|
||||||
@NgModule()
|
@NgModule()
|
||||||
export class CoreMainMenuTabRoutingModule {
|
export class CoreMainMenuTabRoutingModule {
|
||||||
|
|
||||||
static forChild(routes: Partial<ModuleRoutes>): ModuleWithProviders<CoreMainMenuTabRoutingModule> {
|
static forChild(routes: ModuleRoutesConfig): ModuleWithProviders<CoreMainMenuTabRoutingModule> {
|
||||||
return {
|
return {
|
||||||
ngModule: CoreMainMenuTabRoutingModule,
|
ngModule: CoreMainMenuTabRoutingModule,
|
||||||
providers: [
|
providers: [
|
||||||
|
|
|
@ -14,14 +14,14 @@
|
||||||
|
|
||||||
import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';
|
import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';
|
||||||
|
|
||||||
import { ModuleRoutes } from '@/app/app-routing.module';
|
import { ModuleRoutesConfig } from '@/app/app-routing.module';
|
||||||
|
|
||||||
export const MAIN_MENU_HOME_ROUTES = new InjectionToken('MAIN_MENU_HOME_ROUTES');
|
export const MAIN_MENU_HOME_ROUTES = new InjectionToken('MAIN_MENU_HOME_ROUTES');
|
||||||
|
|
||||||
@NgModule()
|
@NgModule()
|
||||||
export class CoreMainMenuHomeRoutingModule {
|
export class CoreMainMenuHomeRoutingModule {
|
||||||
|
|
||||||
static forChild(routes: Partial<ModuleRoutes>): ModuleWithProviders<CoreMainMenuHomeRoutingModule> {
|
static forChild(routes: ModuleRoutesConfig): ModuleWithProviders<CoreMainMenuHomeRoutingModule> {
|
||||||
return {
|
return {
|
||||||
ngModule: CoreMainMenuHomeRoutingModule,
|
ngModule: CoreMainMenuHomeRoutingModule,
|
||||||
providers: [
|
providers: [
|
||||||
|
|
|
@ -41,7 +41,7 @@ const mainMenuMoreRoutes: Routes = [
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
AppRoutingModule.forChild(appRoutes),
|
AppRoutingModule.forChild(appRoutes),
|
||||||
CoreMainMenuTabRoutingModule.forChild({ siblings: mainMenuMoreRoutes }),
|
CoreMainMenuTabRoutingModule.forChild(mainMenuMoreRoutes),
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,7 +37,7 @@ const routes: Routes = [
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
CoreMainMenuTabRoutingModule.forChild({ siblings: routes }),
|
CoreMainMenuTabRoutingModule.forChild(routes),
|
||||||
CoreUserComponentsModule,
|
CoreUserComponentsModule,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
|
|
Loading…
Reference in New Issue