import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { NgModule, ModuleWithProviders, InjectionToken } from '@angular/core'; import { CM_ROOT_OPTION, ICosmosModuleOption } from './cosmos.root.option'; import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/of'; import { CmI18nService, zh as CmZh, en as CmEn } from './service/i18n.service'; import { CmThemeService, dark as CmDark, light as CmLight } from './service/theme.service'; import { BaseComponentModule, baseComponentModuleArray } from './base/base.component.module'; import { BusinessComponentModule, businessComponentModuleArray } from './business/business.component.module'; import { ChartComponentModule, chartComponentModuleArray } from './chart/chart.component.module'; // 导出基础组件和模块 export * from './base/base.component.module'; // 导出业务组件和模块 export * from './business/business.component.module'; // 导出图表组件和模块 export * from './chart/chart.component.module'; // 导出服务 export { CmI18nService, zh as CmZh, en as CmEn } from './service/i18n.service'; export { CmThemeService, dark as CmDark, light as CmLight } from './service/theme.service'; export * from './base/upload/interface'; // 国际化支持 import * as zhJson from './langs/zh'; import * as enJson from './langs/en'; export class CosmosTranslateLoader implements TranslateLoader { public getTranslation(lang: string): any { let langJson = null; if (lang == CmZh) { langJson = zhJson; } else if (lang == CmEn) { langJson = enJson; } return Observable.of(langJson.json); } } @NgModule({ imports: [ CommonModule, FormsModule, BaseComponentModule.forRoot(), ChartComponentModule.forRoot(), BusinessComponentModule.forRoot(), TranslateModule.forRoot({ loader: { provide: TranslateLoader, useClass: CosmosTranslateLoader } }), ], exports: [ ...baseComponentModuleArray, ...businessComponentModuleArray, ...chartComponentModuleArray ] }) export class CosmosModule { static forRoot(options?: ICosmosModuleOption): ModuleWithProviders { return { ngModule: CosmosModule, providers: [ CmI18nService, CmThemeService ] } } static forChild(): ModuleWithProviders { return { ngModule: CosmosModule } } }