import {ModuleWithProviders, NgModule, Optional, SkipSelf} from '@angular/core'; import {throwIfAlreadyLoaded} from '../../guard/module-import-guard'; import {RouterModule} from '@angular/router'; import {TabsPage} from '../../layout/tabs/tabs.page'; import {routesExt} from '../../../df-ext/routes-ext-routing.module'; import {DingtalkGuard} from './dingtalk.guard'; import {DeviceInfoDingtalkService} from './device-info.dingtalk.service'; import {M2_DEVICE_INFO_PROVIDER} from '../../core/tokens/m2.tokens'; import {AppData} from '../../../df-ext/app-data'; import {MenusPage} from '../../layout/menus/menus.page'; import {DingtalkRegisterGuard} from './dingtalk-register.guard'; const layouts = {"tabs": TabsPage, "menus": MenusPage}; const routes = { 'app': [], 'wechat' : [], 'dingtalk' : [ { path: 'm2', component: layouts[AppData.config.layoutMode], canActivate: [DingtalkGuard], children: [ ...routesExt ] }, {path: 'register', canActivate: [DingtalkRegisterGuard], loadChildren: () => import('src/app/df/plugin/dingtalk/register/register.module').then(m => m.DingtalkRegisterPageModule)}, {path: 'error', loadChildren: () => import('src/app/df/routes/error/error.module').then(m => m.ErrorPageModule)}, {path: '', redirectTo: '/m2/home', pathMatch: 'full'} ], }; @NgModule({ declarations: [ ], entryComponents: [], imports: [ RouterModule.forRoot(routes[AppData.config.runMode]) ], providers: [ ] }) export class DingtalkModule { constructor( @Optional() @SkipSelf() parentModule: DingtalkModule) { throwIfAlreadyLoaded(parentModule, 'DingtalkModule'); } static forRoot(): ModuleWithProviders { return { ngModule: DingtalkModule, providers: [ {provide: M2_DEVICE_INFO_PROVIDER, useClass: DeviceInfoDingtalkService}, ]}; } }