import { provideHttpClient, withInterceptors } from '@angular/common/http'; import { default as ngLang } from '@angular/common/locales/zh'; import { ApplicationConfig, EnvironmentProviders, Provider } from '@angular/core'; import { provideAnimations } from '@angular/platform-browser/animations'; import { provideRouter, withComponentInputBinding, withViewTransitions, withInMemoryScrolling, withHashLocation, RouterFeatures } from '@angular/router'; import { defaultInterceptor, provideStartup } from '@core'; import { provideCellWidgets } from '@delon/abc/cell'; import { provideSTWidgets } from '@delon/abc/st'; import { authSimpleInterceptor, provideAuth } from '@delon/auth'; import { provideSFConfig } from '@delon/form'; import { AlainProvideLang, provideAlain, zh_CN as delonLang } from '@delon/theme'; import { AlainConfig } from '@delon/util/config'; import { environment } from '@env/environment'; import { CELL_WIDGETS, ST_WIDGETS, SF_WIDGETS } from '@shared'; import { zhCN as dateLang } from 'date-fns/locale'; import { NzConfig, provideNzConfig } from 'ng-zorro-antd/core/config'; import { zh_CN as zorroLang } from 'ng-zorro-antd/i18n'; import { provideBindAuthRefresh } from './core/net'; import { routes } from './routes/routes'; import { ICONS } from '../style-icons'; import { ICONS_AUTO } from '../style-icons-auto'; const defaultLang: AlainProvideLang = { abbr: 'zh-CN', ng: ngLang, zorro: zorroLang, date: dateLang, delon: delonLang }; const alainConfig: AlainConfig = { auth: { login_url: '/passport/login' } }; const ngZorroConfig: NzConfig = {}; const routerFeatures: RouterFeatures[] = [ withComponentInputBinding(), withViewTransitions(), withInMemoryScrolling({ scrollPositionRestoration: 'top' }) ]; if (environment.useHash) routerFeatures.push(withHashLocation()); const providers: Array = [ provideHttpClient(withInterceptors([...(environment.interceptorFns ?? []), authSimpleInterceptor, defaultInterceptor])), provideAnimations(), provideRouter(routes, ...routerFeatures), provideAlain({ config: alainConfig, defaultLang, icons: [...ICONS_AUTO, ...ICONS] }), provideNzConfig(ngZorroConfig), provideAuth(), provideCellWidgets(...CELL_WIDGETS), provideSTWidgets(...ST_WIDGETS), provideSFConfig({ widgets: [...SF_WIDGETS] }), provideStartup(), ...(environment.providers || []) ]; // If you use `@delon/auth` to refresh the token, additional registration `provideBindAuthRefresh` is required if (environment.api?.refreshTokenEnabled && environment.api.refreshTokenType === 'auth-refresh') { providers.push(provideBindAuthRefresh()); } export const appConfig: ApplicationConfig = { providers: providers };