MOBILE-3320 routes: Refactor module routes config

main
Noel De Martin 2020-12-15 09:47:15 +01:00
parent de38835518
commit acefa8c35a
7 changed files with 27 additions and 15 deletions

View File

@ -33,9 +33,7 @@ const mainMenuHomeSiblingRoutes: Routes = [
@NgModule({ @NgModule({
imports: [ imports: [
CoreMainMenuTabRoutingModule.forChild({ CoreMainMenuTabRoutingModule.forChild(mainMenuHomeSiblingRoutes),
siblings: mainMenuHomeSiblingRoutes,
}),
], ],
providers: [ providers: [
{ {

View File

@ -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)),
}; };
} }

View File

@ -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: [

View File

@ -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: [

View File

@ -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: [

View File

@ -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: [
{ {

View File

@ -37,7 +37,7 @@ const routes: Routes = [
@NgModule({ @NgModule({
imports: [ imports: [
CoreMainMenuTabRoutingModule.forChild({ siblings: routes }), CoreMainMenuTabRoutingModule.forChild(routes),
CoreUserComponentsModule, CoreUserComponentsModule,
], ],
providers: [ providers: [