import {NgModule} from '@angular/core'; import {Routes, RouterModule} from '@angular/router'; import AuthGuardService from "@common/services/authGuard"; declare var require: any; declare var process: any; /* * 路由管理部分,用于储存路由信息 * */ class RouterManager { public _config; set config(config) { this._config = config; } findRoute(arr, name, maxLoop, index = 1): any { let obj = {}; if (arr instanceof Array) { for (let i = 0; i < arr.length; i++) { let route = arr[i]; if (route.data && route.data.name === name) { if (route.children) { route.children = route.children.filter(item => { return !item.redirectTo; }); } return route; } else if (route.children && route.children.length > 0 && index < maxLoop) { obj = this.findRoute(route.children, name, maxLoop, index + 1); if (Object.keys(obj).length > 0) { return obj; } } } } return obj; } getRoute(name): any { return this.findRoute(this._config, name, name.split('.').length); } setRouteChildren(name, value) { this.getRoute(name).children = value; } } export const routerManager = new RouterManager(); /* * 主路由部分 * */ const routeConfig: any = [ { path: '', redirectTo: '/login', pathMatch: 'full', }, { path: "login", loadChildren: () => new Promise(resolve => { require.ensure([], function (require: any) { resolve(require('./modules/login')['LoginModule']); }, 'login'); }) }, { path: "admin", data: { name: 'admin', title: '超级管理员权限' }, loadChildren: () => new Promise(function (resolve) { require.ensure([], function (require: any) { resolve(require('./modules/admin')['AdminModule']); }, 'admin'); }), }, { path: 'noMatch', loadChildren: () => new Promise(resolve => { require.ensure([], function (require: any) { resolve(require('./modules/noMatch')['NoMatchModule']); }, 'noMatch'); }) } ]; if (process.env.NODE_ENV === 'development') { routeConfig.push( { path: "manage", data: { name: 'manage', title: '系统配置' }, loadChildren: () => new Promise(function (resolve) { require.ensure([], function (require: any) { resolve(require('./modules/manage')['ManageModule']); }, 'manage'); }) } ) } routeConfig.push({ path: '**', redirectTo: '/noMatch' }); const appRoutes: Routes = routeConfig; routerManager.config = appRoutes; @NgModule({ imports: [ RouterModule.forRoot(appRoutes, { useHash: false, enableTracing: false && process.env.NODE_ENV === 'development' }) ], exports: [ RouterModule ] }) export default class RoutingModule { }