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({
imports: [
CoreMainMenuTabRoutingModule.forChild({
siblings: mainMenuHomeSiblingRoutes,
}),
CoreMainMenuTabRoutingModule.forChild(mainMenuHomeSiblingRoutes),
],
providers: [
{

View File

@ -22,13 +22,27 @@ function buildAppRoutes(injector: Injector): Routes {
}
export type ModuleRoutes = { children: Routes; siblings: Routes };
export type ModuleRoutesConfig = Routes | Partial<ModuleRoutes>;
export function resolveModuleRoutes(injector: Injector, token: InjectionToken<Partial<ModuleRoutes>[]>): ModuleRoutes {
const routes = injector.get(token, []);
export function resolveModuleRoutes(injector: Injector, token: InjectionToken<ModuleRoutesConfig[]>): ModuleRoutes {
const configs = injector.get(token, []);
const routes = configs.map(config => {
if (Array.isArray(config)) {
return {
children: [],
siblings: config,
};
}
return {
children: config.children || [],
siblings: config.siblings || [],
};
});
return {
children: CoreArray.flatten(routes.map(r => r.children || [])),
siblings: CoreArray.flatten(routes.map(r => r.siblings || [])),
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 { ModuleRoutes } from '@/app/app-routing.module';
import { ModuleRoutesConfig } from '@/app/app-routing.module';
export const MAIN_MENU_ROUTES = new InjectionToken('MAIN_MENU_ROUTES');
@NgModule()
export class CoreMainMenuRoutingModule {
static forChild(routes: Partial<ModuleRoutes>): ModuleWithProviders<CoreMainMenuRoutingModule> {
static forChild(routes: ModuleRoutesConfig): ModuleWithProviders<CoreMainMenuRoutingModule> {
return {
ngModule: CoreMainMenuRoutingModule,
providers: [

View File

@ -15,7 +15,7 @@
import { InjectionToken, Injector, ModuleWithProviders, NgModule } from '@angular/core';
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');
@ -35,7 +35,7 @@ export function buildTabMainRoutes(injector: Injector, mainRoute: Route): Routes
@NgModule()
export class CoreMainMenuTabRoutingModule {
static forChild(routes: Partial<ModuleRoutes>): ModuleWithProviders<CoreMainMenuTabRoutingModule> {
static forChild(routes: ModuleRoutesConfig): ModuleWithProviders<CoreMainMenuTabRoutingModule> {
return {
ngModule: CoreMainMenuTabRoutingModule,
providers: [

View File

@ -14,14 +14,14 @@
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');
@NgModule()
export class CoreMainMenuHomeRoutingModule {
static forChild(routes: Partial<ModuleRoutes>): ModuleWithProviders<CoreMainMenuHomeRoutingModule> {
static forChild(routes: ModuleRoutesConfig): ModuleWithProviders<CoreMainMenuHomeRoutingModule> {
return {
ngModule: CoreMainMenuHomeRoutingModule,
providers: [

View File

@ -41,7 +41,7 @@ const mainMenuMoreRoutes: Routes = [
@NgModule({
imports: [
AppRoutingModule.forChild(appRoutes),
CoreMainMenuTabRoutingModule.forChild({ siblings: mainMenuMoreRoutes }),
CoreMainMenuTabRoutingModule.forChild(mainMenuMoreRoutes),
],
providers: [
{

View File

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