| /* eslint-disable import/order */ |
| /* eslint-disable import/no-duplicates */ |
| import { HttpClientModule } from '@angular/common/http'; |
| import { APP_INITIALIZER, LOCALE_ID, NgModule, Type } from '@angular/core'; |
| import { BrowserModule } from '@angular/platform-browser'; |
| import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; |
| import { NzMessageModule } from 'ng-zorro-antd/message'; |
| import { NzNotificationModule } from 'ng-zorro-antd/notification'; |
| import { Observable } from 'rxjs'; |
| |
| import { default as ngLang } from '@angular/common/locales/en'; |
| import { DELON_LOCALE, en_US as delonLang } from '@delon/theme'; |
| import { enUS as dateLang } from 'date-fns/locale'; |
| import { NZ_DATE_LOCALE, NZ_I18N, en_US as zorroLang } from 'ng-zorro-antd/i18n'; |
| const LANG = { |
| abbr: 'en-US', |
| ng: ngLang, |
| zorro: zorroLang, |
| date: dateLang, |
| delon: delonLang |
| }; |
| 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: NZ_DATE_LOCALE, useValue: LANG.date }, |
| { provide: DELON_LOCALE, useValue: LANG.delon } |
| ]; |
| |
| import { ALAIN_I18N_TOKEN } from '@delon/theme'; |
| import { I18NService } from '@core'; |
| |
| const I18NSERVICE_PROVIDES = [{ provide: ALAIN_I18N_TOKEN, useClass: I18NService, multi: false }]; |
| |
| import { JsonSchemaModule } from '@shared'; |
| const FORM_MODULES = [JsonSchemaModule]; |
| |
| import { HTTP_INTERCEPTORS } from '@angular/common/http'; |
| import { DefaultInterceptor } from '@core'; |
| const INTERCEPTOR_PROVIDES = [{ provide: HTTP_INTERCEPTORS, useClass: DefaultInterceptor, multi: true }]; |
| |
| const GLOBAL_THIRD_MODULES: Array<Type<void>> = [SlickCarouselModule, TagCloudComponent]; |
| |
| import { StartupService } from '@core'; |
| export function StartupServiceFactory(startupService: StartupService): () => Observable<void> { |
| return () => startupService.load(); |
| } |
| const APP_INIT_PROVIDES = [ |
| StartupService, |
| { |
| provide: APP_INITIALIZER, |
| useFactory: StartupServiceFactory, |
| deps: [StartupService], |
| multi: true |
| } |
| ]; |
| |
| import { AppComponent } from './app.component'; |
| import { CoreModule } from './core/core.module'; |
| import { GlobalConfigModule } from './global-config.module'; |
| import { LayoutModule } from './layout/layout.module'; |
| import { RoutesModule } from './routes/routes.module'; |
| import { SharedModule } from './shared/shared.module'; |
| import { ReactiveFormsModule } from '@angular/forms'; |
| import { NgxEchartsModule } from 'ngx-echarts'; |
| import { SlickCarouselModule } from 'ngx-slick-carousel'; |
| import { TagCloudComponent } from 'angular-tag-cloud-module'; |
| import { MarkdownModule } from 'ngx-markdown'; |
| |
| @NgModule({ |
| declarations: [AppComponent], |
| imports: [ |
| BrowserModule, |
| BrowserAnimationsModule, |
| HttpClientModule, |
| GlobalConfigModule.forRoot(), |
| CoreModule, |
| SharedModule, |
| LayoutModule, |
| RoutesModule, |
| NzMessageModule, |
| NzNotificationModule, |
| ...FORM_MODULES, |
| ...GLOBAL_THIRD_MODULES, |
| ReactiveFormsModule, |
| NgxEchartsModule.forRoot({ |
| echarts: () => import('echarts') |
| }), |
| MarkdownModule.forRoot() |
| ], |
| providers: [...LANG_PROVIDES, ...INTERCEPTOR_PROVIDES, ...I18NSERVICE_PROVIDES, ...APP_INIT_PROVIDES], |
| bootstrap: [AppComponent] |
| }) |
| export class AppModule {} |