123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- import { NgModule, LOCALE_ID, APP_INITIALIZER } from '@angular/core';
- import { HttpClient, HttpClientModule } from '@angular/common/http';
- import { BrowserModule } from '@angular/platform-browser';
- import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
- // #region default language
- // 参考:https://ng-alain.com/docs/i18n
- import { default as ngLang } from '@angular/common/locales/zh';
- import { NZ_I18N, zh_CN as zorroLang } from 'ng-zorro-antd';
- import { DELON_LOCALE, zh_CN as delonLang } from '@delon/theme';
- const LANG = {
- abbr: 'zh',
- ng: ngLang,
- zorro: zorroLang,
- delon: delonLang,
- };
- // register angular
- import { registerLocaleData } from '@angular/common';
- registerLocaleData(LANG.ng, LANG.abbr);
- const LANG_PROVIDES = [
- { provide: LOCALE_ID, useValue: LANG.abbr },
- { provide: NZ_I18N, useValue: LANG.zorro },
- { provide: DELON_LOCALE, useValue: LANG.delon },
- ];
- // #endregion
- // #region i18n services
- import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
- import { TranslateHttpLoader } from '@ngx-translate/http-loader';
- import { ALAIN_I18N_TOKEN } from '@delon/theme';
- import { I18NService } from '@core';
- // 加载i18n语言文件
- export function I18nHttpLoaderFactory(http: HttpClient) {
- return new TranslateHttpLoader(http, `assets/tmp/i18n/`, '.json');
- }
- const I18NSERVICE_MODULES = [
- TranslateModule.forRoot({
- loader: {
- provide: TranslateLoader,
- useFactory: I18nHttpLoaderFactory,
- deps: [HttpClient],
- },
- }),
- ];
- const I18NSERVICE_PROVIDES = [{ provide: ALAIN_I18N_TOKEN, useClass: I18NService, multi: false }];
- // #endregion
- // #region global third module
- const GLOBAL_THIRD_MODULES = [];
- // #endregion
- // #region JSON Schema form (using @delon/form)
- import { JsonSchemaModule } from '@shared/json-schema/json-schema.module';
- const FORM_MODULES = [JsonSchemaModule];
- // #endregion
- // #region Http Interceptors
- import { HTTP_INTERCEPTORS } from '@angular/common/http';
- import { SimpleInterceptor } from '@delon/auth';
- import { DefaultInterceptor } from '@core';
- const INTERCEPTOR_PROVIDES = [
- { provide: HTTP_INTERCEPTORS, useClass: SimpleInterceptor, multi: true },
- { provide: HTTP_INTERCEPTORS, useClass: DefaultInterceptor, multi: true },
- ];
- // #endregion
- // #region Startup Service
- import { StartupService } from '@core';
- export function StartupServiceFactory(
- startupService: StartupService,
- ): Function {
- return () => startupService.load();
- }
- const APPINIT_PROVIDES = [
- StartupService,
- {
- provide: APP_INITIALIZER,
- useFactory: StartupServiceFactory,
- deps: [StartupService],
- multi: true,
- },
- ];
- // #endregion
- import { DelonModule } from './delon.module';
- import { CoreModule } from './core/core.module';
- import { SharedModule } from './shared/shared.module';
- import { RoutesModule } from './routes/routes.module';
- import { LayoutModule } from './layout/layout.module';
- import { AppComponent } from './app.component';
- import { RouteguardService } from '@core/guard/routeguard.service';
- @NgModule({
- declarations: [AppComponent],
- imports: [
- BrowserModule,
- BrowserAnimationsModule,
- HttpClientModule,
- DelonModule.forRoot(),
- CoreModule,
- SharedModule,
- LayoutModule,
- RoutesModule,
- ...I18NSERVICE_MODULES,
- ...GLOBAL_THIRD_MODULES,
- ...FORM_MODULES,
- ],
- providers: [...LANG_PROVIDES, ...INTERCEPTOR_PROVIDES, ...I18NSERVICE_PROVIDES, ...APPINIT_PROVIDES, RouteguardService],
- bootstrap: [AppComponent],
- })
- export class AppModule { }
|