From b9e0fadd4a278788a85044f40b81851b72ddb749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A1=E8=89=B2?= Date: Fri, 10 Nov 2023 13:12:18 +0800 Subject: [PATCH] feat: add `provideAlainConfig` (#1689) --- docs/global-config.en-US.md | 6 +-- docs/global-config.zh-CN.md | 6 +-- docs/ssr.md | 2 +- packages/abc/st/test/st-sort.spec.ts | 16 ++------ .../auth/src/token/base.interceptor.spec.ts | 4 +- .../src/token/jwt/jwt.interceptor.spec.ts | 4 +- .../token/simple/simple.interceptor.spec.ts | 4 +- packages/cache/src/cache.spec.ts | 4 +- packages/chart/docs/getting-started.en-US.md | 6 +-- packages/chart/docs/getting-started.zh-CN.md | 4 +- packages/mock/src/mock.interceptor.spec.ts | 4 +- packages/mock/src/mock.service.spec.ts | 4 +- packages/theme/src/services/http/http.spec.ts | 4 +- packages/theme/src/services/i18n/i18n.spec.ts | 6 +-- .../src/services/settings/index.en-US.md | 2 +- .../src/services/settings/index.zh-CN.md | 4 +- packages/util/array/array.service.spec.ts | 13 +------ packages/util/config/config.types.ts | 6 ++- .../ng-update/upgrade-rules/v17/index.spec.ts | 8 ++++ .../ng-update/upgrade-rules/v17/index.ts | 9 ++++- .../upgrade-rules/v17/replaceProvideConfig.ts | 37 +++++++++++++++++++ .../core/code/files/global-config.module.ts | 4 +- src/app/global-config.module.ts | 4 +- 23 files changed, 99 insertions(+), 62 deletions(-) create mode 100644 schematics/ng-update/upgrade-rules/v17/replaceProvideConfig.ts diff --git a/docs/global-config.en-US.md b/docs/global-config.en-US.md index 2dee1385b1..f712aa77ba 100644 --- a/docs/global-config.en-US.md +++ b/docs/global-config.en-US.md @@ -10,11 +10,11 @@ We add support of **global configuration** to many components. You can define th ## How to Use? -If you want to provide default configurations to some components, you should provide an object that implements the interface **AlainConfig** with the injection token **ALAIN_CONFIG**, in the root module (in another word, to the root injector). Like this: +If you want to provide default configurations to some components, please use `provideAlainConfig` function. object providing implements interface `AlainConfig` For example: ```typescript // global-config.module.ts -import { AlainConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { AlainConfig } from '@delon/util/config'; const alainConfig: AlainConfig = { st: { ps: 3 }, @@ -22,7 +22,7 @@ const alainConfig: AlainConfig = { @NgModule({ providers: [ - { provide: ALAIN_CONFIG, useValue: alainConfig }, + provideAlainConfig(alainConfig) ], }) export class GlobalConfigModule {} diff --git a/docs/global-config.zh-CN.md b/docs/global-config.zh-CN.md index 626eea5689..d2e728e058 100644 --- a/docs/global-config.zh-CN.md +++ b/docs/global-config.zh-CN.md @@ -10,11 +10,11 @@ type: Dev ## 如何使用 -想要为某些组件提供默认配置项,请在根注入器中根据注入令牌 `ALAIN_CONFIG` 提供一个符合 `AlainConfig` 接口的对象,例如: +想要为某些组件提供默认配置项,可以使用 `provideAlainConfig` 函数,转入一个符合 `AlainConfig` 接口的对象,例如: ```typescript // global-config.module.ts -import { AlainConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { AlainConfig } from '@delon/util/config'; const alainConfig: AlainConfig = { st: { ps: 3 }, @@ -22,7 +22,7 @@ const alainConfig: AlainConfig = { @NgModule({ providers: [ - { provide: ALAIN_CONFIG, useValue: alainConfig }, + provideAlainConfig(alainConfig) ], }) export class GlobalConfigModule {} diff --git a/docs/ssr.md b/docs/ssr.md index 74a1ef962a..5b1c4f3391 100644 --- a/docs/ssr.md +++ b/docs/ssr.md @@ -77,7 +77,7 @@ export class AuthStorageStore implements IStore { ```diff const alainProvides = [ - { provide: ALAIN_CONFIG, useValue: alainConfig }, + provideAlainConfig(alainConfig) + { provide: DA_STORE_TOKEN, useClass: AuthStorageStore }, ]; ``` diff --git a/packages/abc/st/test/st-sort.spec.ts b/packages/abc/st/test/st-sort.spec.ts index 5bed0f706e..0ee9a564fb 100644 --- a/packages/abc/st/test/st-sort.spec.ts +++ b/packages/abc/st/test/st-sort.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, fakeAsync } from '@angular/core/testing'; -import { AlainConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { provideAlainConfig } from '@delon/util/config'; import { NzSafeAny } from 'ng-zorro-antd/core/types'; import { PageObject, TestComponent, genModule } from './base.spec'; @@ -100,12 +100,7 @@ describe('abc: st-sort', () => { it('should default is mulit sorting', () => { page = genModule(TestComponent, { minColumn: true, - providers: [ - { - provide: ALAIN_CONFIG, - useValue: { st: { multiSort: { global: true } } } as AlainConfig - } - ], + providers: [provideAlainConfig({ st: { multiSort: { global: true } } })], createComp: true })!; expect(page.comp.multiSort).not.toBeUndefined(); @@ -113,12 +108,7 @@ describe('abc: st-sort', () => { it('should default non-mulit sorting', () => { page = genModule(TestComponent, { minColumn: true, - providers: [ - { - provide: ALAIN_CONFIG, - useValue: { st: { multiSort: { global: false } } } as AlainConfig - } - ], + providers: [provideAlainConfig({ st: { multiSort: { global: false } } })], createComp: true })!; expect(page.comp.multiSort).toBeUndefined(); diff --git a/packages/auth/src/token/base.interceptor.spec.ts b/packages/auth/src/token/base.interceptor.spec.ts index 6d47540291..f5d9a8c94b 100644 --- a/packages/auth/src/token/base.interceptor.spec.ts +++ b/packages/auth/src/token/base.interceptor.spec.ts @@ -17,7 +17,7 @@ import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { Observable, throwError, catchError } from 'rxjs'; -import { AlainAuthConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { AlainAuthConfig, provideAlainConfig } from '@delon/util/config'; import { AuthReferrer, DA_SERVICE_TOKEN, ITokenModel, ITokenService } from './interface'; import { SimpleInterceptor } from './simple/simple.interceptor'; @@ -81,7 +81,7 @@ describe('auth: base.interceptor', () => { imports: [HttpClientTestingModule, RouterTestingModule.withRoutes([]), DelonAuthModule], providers: [ { provide: DOCUMENT, useValue: MockDoc }, - { provide: ALAIN_CONFIG, useValue: { auth: options } }, + provideAlainConfig({ auth: options }), { provide: HTTP_INTERCEPTORS, useClass: SimpleInterceptor, diff --git a/packages/auth/src/token/jwt/jwt.interceptor.spec.ts b/packages/auth/src/token/jwt/jwt.interceptor.spec.ts index 56e311b79c..62a6c76e48 100644 --- a/packages/auth/src/token/jwt/jwt.interceptor.spec.ts +++ b/packages/auth/src/token/jwt/jwt.interceptor.spec.ts @@ -5,7 +5,7 @@ import { TestBed } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { of, catchError } from 'rxjs'; -import { AlainAuthConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { AlainAuthConfig, provideAlainConfig } from '@delon/util/config'; import { JWTInterceptor } from './jwt.interceptor'; import { JWTTokenModel } from './jwt.model'; @@ -41,7 +41,7 @@ describe('auth: jwt.interceptor', () => { DelonAuthModule ], providers: [ - { provide: ALAIN_CONFIG, useValue: { auth: options } }, + provideAlainConfig({ auth: options }), { provide: HTTP_INTERCEPTORS, useClass: JWTInterceptor, multi: true } ] }); diff --git a/packages/auth/src/token/simple/simple.interceptor.spec.ts b/packages/auth/src/token/simple/simple.interceptor.spec.ts index adb4cadda0..d2787563f2 100644 --- a/packages/auth/src/token/simple/simple.interceptor.spec.ts +++ b/packages/auth/src/token/simple/simple.interceptor.spec.ts @@ -7,7 +7,7 @@ import { DefaultUrlSerializer, Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { Observable } from 'rxjs'; -import { AlainAuthConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { AlainAuthConfig, provideAlainConfig } from '@delon/util/config'; import { SimpleInterceptor } from './simple.interceptor'; import { SimpleTokenModel } from './simple.model'; @@ -58,7 +58,7 @@ describe('auth: simple.interceptor', () => { TestBed.configureTestingModule({ imports: [HttpClientTestingModule, RouterTestingModule.withRoutes([]), DelonAuthModule], providers: [ - { provide: ALAIN_CONFIG, useValue: { auth: options } }, + provideAlainConfig({ auth: options }), { provide: Router, useValue: mockRouter }, { provide: HTTP_INTERCEPTORS, diff --git a/packages/cache/src/cache.spec.ts b/packages/cache/src/cache.spec.ts index a0ce833610..fe6d9bd087 100644 --- a/packages/cache/src/cache.spec.ts +++ b/packages/cache/src/cache.spec.ts @@ -5,7 +5,7 @@ import { Type } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { firstValueFrom, Observable, of, filter } from 'rxjs'; -import { AlainCacheConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { AlainCacheConfig, provideAlainConfig } from '@delon/util/config'; import { DelonCacheModule } from './cache.module'; import { CacheService } from './cache.service'; @@ -39,7 +39,7 @@ describe('cache: service', () => { function genModule(options?: AlainCacheConfig): void { const providers: any[] = []; if (options) { - providers.push({ provide: ALAIN_CONFIG, useValue: { cache: options } }); + providers.push(provideAlainConfig({ cache: options })); } TestBed.configureTestingModule({ imports: [HttpClientTestingModule, DelonCacheModule], diff --git a/packages/chart/docs/getting-started.en-US.md b/packages/chart/docs/getting-started.en-US.md index 12329bd056..51538d8651 100644 --- a/packages/chart/docs/getting-started.en-US.md +++ b/packages/chart/docs/getting-started.en-US.md @@ -29,7 +29,7 @@ export class DelonModule { return { ngModule: DelonModule, providers: [ - { provide: ALAIN_CONFIG, useValue: alainConfig } + provideAlainConfig(alainConfig) ] }; } @@ -105,9 +105,9 @@ export class DelonModule { return { ngModule: DelonModule, providers: [ - { provide: ALAIN_CONFIG, useValue: alainConfig } + provideAlainConfig(alainConfig) ] }; } } -``` \ No newline at end of file +``` diff --git a/packages/chart/docs/getting-started.zh-CN.md b/packages/chart/docs/getting-started.zh-CN.md index ba34699d4c..9ee80c98a4 100644 --- a/packages/chart/docs/getting-started.zh-CN.md +++ b/packages/chart/docs/getting-started.zh-CN.md @@ -41,7 +41,7 @@ export class DelonModule { return { ngModule: DelonModule, providers: [ - { provide: ALAIN_CONFIG, useValue: alainConfig } + provideAlainConfig(alainConfig) ] }; } @@ -117,7 +117,7 @@ export class DelonModule { return { ngModule: DelonModule, providers: [ - { provide: ALAIN_CONFIG, useValue: alainConfig } + provideAlainConfig(alainConfig) ] }; } diff --git a/packages/mock/src/mock.interceptor.spec.ts b/packages/mock/src/mock.interceptor.spec.ts index a2b1c4f450..d2b37b5dfc 100644 --- a/packages/mock/src/mock.interceptor.spec.ts +++ b/packages/mock/src/mock.interceptor.spec.ts @@ -18,7 +18,7 @@ import { Observable, lastValueFrom, map, of } from 'rxjs'; import * as Mock from 'mockjs'; -import { AlainMockConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { AlainMockConfig, provideAlainConfig } from '@delon/util/config'; import { MockRequest } from './interface'; import { DelonMockModule } from './mock.module'; @@ -81,7 +81,7 @@ describe('mock: interceptor', () => { ]), DelonMockModule.forRoot({ data }) ].concat(imports), - providers: ([{ provide: ALAIN_CONFIG, useValue: { mock: options } }] as any[]).concat(providers || []) + providers: ([provideAlainConfig({ mock: options })] as any[]).concat(providers || []) }); http = TestBed.inject(HttpClient); httpMock = TestBed.inject(HttpTestingController as Type); diff --git a/packages/mock/src/mock.service.spec.ts b/packages/mock/src/mock.service.spec.ts index 915f09df86..e52fb1dd88 100644 --- a/packages/mock/src/mock.service.spec.ts +++ b/packages/mock/src/mock.service.spec.ts @@ -3,7 +3,7 @@ import { TestBed } from '@angular/core/testing'; import * as Mock from 'mockjs'; -import { AlainMockConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { AlainMockConfig, provideAlainConfig } from '@delon/util/config'; import { MockOptions, MockRequest, MockRule } from './interface'; import { MockService } from './mock.service'; @@ -32,7 +32,7 @@ describe('mock: service', () => { function genModule(options: AlainMockConfig, mockOptions?: MockOptions): void { TestBed.configureTestingModule({ imports: [DelonMockModule.forRoot(mockOptions)], - providers: [{ provide: ALAIN_CONFIG, useValue: { mock: options } }] + providers: [provideAlainConfig({ mock: options })] }); srv = TestBed.inject(MockService); spyOn(console, 'log'); diff --git a/packages/theme/src/services/http/http.spec.ts b/packages/theme/src/services/http/http.spec.ts index 22daeb58f5..48c6124ead 100644 --- a/packages/theme/src/services/http/http.spec.ts +++ b/packages/theme/src/services/http/http.spec.ts @@ -5,7 +5,7 @@ import { Type } from '@angular/core'; import { fakeAsync, TestBed, tick } from '@angular/core/testing'; import { of, catchError } from 'rxjs'; -import { AlainThemeHttpClientConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { AlainThemeHttpClientConfig, provideAlainConfig } from '@delon/util/config'; import { deepCopy } from '@delon/util/other'; import { NzSafeAny } from 'ng-zorro-antd/core/types'; @@ -24,7 +24,7 @@ describe('theme: http.client', () => { function createModule(config?: AlainThemeHttpClientConfig): void { const providers: any[] = [_HttpClient]; if (config) { - providers.push({ provide: ALAIN_CONFIG, useValue: { themeHttp: config } }); + providers.push(provideAlainConfig({ themeHttp: config })); } TestBed.configureTestingModule({ imports: [HttpClientTestingModule], diff --git a/packages/theme/src/services/i18n/i18n.spec.ts b/packages/theme/src/services/i18n/i18n.spec.ts index 1602011db4..e902bed186 100644 --- a/packages/theme/src/services/i18n/i18n.spec.ts +++ b/packages/theme/src/services/i18n/i18n.spec.ts @@ -4,7 +4,7 @@ import { By } from '@angular/platform-browser'; import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; -import { AlainConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { provideAlainConfig } from '@delon/util/config'; import { AlainI18NService, ALAIN_I18N_TOKEN } from './i18n'; import { alainI18nCanActivate, alainI18nCanActivateChild } from './i18n-url.guard'; @@ -70,7 +70,7 @@ describe('theme: i18n', () => { TestBed.configureTestingModule({ imports: [AlainThemeModule], declarations: [TestComponent], - providers: [{ provide: ALAIN_CONFIG, useValue: { themeI18n: { interpolation: ['#', '#'] } } as AlainConfig }] + providers: [provideAlainConfig({ themeI18n: { interpolation: ['#', '#'] } })] }); fixture = TestBed.createComponent(TestComponent); srv = fixture.debugElement.injector.get(ALAIN_I18N_TOKEN); @@ -137,7 +137,7 @@ describe('theme: i18n', () => { ]) ], declarations: [TestComponent], - providers: [{ provide: ALAIN_CONFIG, useValue: { themeI18n: { paramNameOfUrlGuard: 'lang' } } as AlainConfig }] + providers: [provideAlainConfig({ themeI18n: { paramNameOfUrlGuard: 'lang' } })] }); fixture = TestBed.createComponent(TestComponent); srv = fixture.debugElement.injector.get(ALAIN_I18N_TOKEN); diff --git a/packages/theme/src/services/settings/index.en-US.md b/packages/theme/src/services/settings/index.en-US.md index 80173c7cfe..6dd12e5e89 100644 --- a/packages/theme/src/services/settings/index.en-US.md +++ b/packages/theme/src/services/settings/index.en-US.md @@ -54,7 +54,7 @@ Support add the configuration of `ALAIN_SETTING_KEYS` via the `global-config.mod ```diff const alainProvides = [ - { provide: ALAIN_CONFIG, useValue: alainConfig }, + provideAlainConfig(alainConfig), + { + provide: ALAIN_SETTING_KEYS, + useValue: { diff --git a/packages/theme/src/services/settings/index.zh-CN.md b/packages/theme/src/services/settings/index.zh-CN.md index 7fd65ef98f..499ecda818 100644 --- a/packages/theme/src/services/settings/index.zh-CN.md +++ b/packages/theme/src/services/settings/index.zh-CN.md @@ -54,7 +54,7 @@ type: Service ```diff const alainProvides = [ - { provide: ALAIN_CONFIG, useValue: alainConfig }, + provideAlainConfig(alainConfig), + { + provide: ALAIN_SETTING_KEYS, + useValue: { @@ -64,4 +64,4 @@ type: Service + }, + }, ]; -``` \ No newline at end of file +``` diff --git a/packages/util/array/array.service.spec.ts b/packages/util/array/array.service.spec.ts index de326d1ad3..91a4d67ca5 100644 --- a/packages/util/array/array.service.spec.ts +++ b/packages/util/array/array.service.spec.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { TestBed } from '@angular/core/testing'; -import { AlainConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { provideAlainConfig } from '@delon/util/config'; import { deepCopy } from '@delon/util/other'; import { NzTreeBaseService, NzTreeNode } from 'ng-zorro-antd/core/tree'; @@ -230,16 +230,7 @@ describe('utils: array', () => { describe('[config]', () => { beforeEach(() => { TestBed.configureTestingModule({ - providers: [ - { - provide: ALAIN_CONFIG, - useValue: { - utilArray: { - idMapName: 'ID' - } - } as AlainConfig - } - ] + providers: [provideAlainConfig({ utilArray: { idMapName: 'ID' } })] }); srv = TestBed.inject(ArrayService); }); diff --git a/packages/util/config/config.types.ts b/packages/util/config/config.types.ts index 13796d0861..789cf44aa9 100644 --- a/packages/util/config/config.types.ts +++ b/packages/util/config/config.types.ts @@ -1,4 +1,4 @@ -import { InjectionToken } from '@angular/core'; +import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core'; import { AlainCellConfig, @@ -72,3 +72,7 @@ export const ALAIN_CONFIG = new InjectionToken('alain-config', { export function ALAIN_CONFIG_FACTORY(): AlainConfig { return {}; } + +export function provideAlainConfig(config: AlainConfig): EnvironmentProviders { + return makeEnvironmentProviders([{ provide: ALAIN_CONFIG, useValue: config }]); +} diff --git a/schematics/ng-update/upgrade-rules/v17/index.spec.ts b/schematics/ng-update/upgrade-rules/v17/index.spec.ts index 2cbb993b8e..bfe3316af6 100644 --- a/schematics/ng-update/upgrade-rules/v17/index.spec.ts +++ b/schematics/ng-update/upgrade-rules/v17/index.spec.ts @@ -63,4 +63,12 @@ describe('Schematic: ng-update: v17Rule', () => { const content = tree.readContent(globalConfigPath); expect(content).not.toContain(`AlainThemeModule.forRoot()`); }); + + it('#replaceProvideAlainConfig', async () => { + const globalConfigPath = '/projects/foo/src/app/global-config.module.ts'; + tree.create(globalConfigPath, `const alainProvides = [{ provide: ALAIN_CONFIG, useValue: alainConfig }];`); + await runMigration(); + const content = tree.readContent(globalConfigPath); + expect(content).toContain(`provideAlainConfig(alainConfig)`); + }); }); diff --git a/schematics/ng-update/upgrade-rules/v17/index.ts b/schematics/ng-update/upgrade-rules/v17/index.ts index ae90cf5d07..7930266485 100644 --- a/schematics/ng-update/upgrade-rules/v17/index.ts +++ b/schematics/ng-update/upgrade-rules/v17/index.ts @@ -3,6 +3,7 @@ import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; import { autoRegisterFormWidgets } from './autoRegisterFormWidgets'; import { removeAlainThemeModuleForRoot } from './removeAlainThemeModuleForRoot'; +import { replaceProvideConfig } from './replaceProvideConfig'; import { logFinished, logInfo, logWarn } from '../../../utils'; import { UpgradeMainVersions } from '../../../utils/versions'; @@ -30,6 +31,12 @@ export function v17Rule(): Rule { return async (tree: Tree, context: SchematicContext) => { UpgradeMainVersions(tree); logInfo(context, `Upgrade dependency version number`); - return chain([removeAlainThemeModuleForRoot(), autoRegisterFormWidgets(), qr(), finished()]); + return chain([ + removeAlainThemeModuleForRoot(), + autoRegisterFormWidgets(), + replaceProvideConfig(), + qr(), + finished() + ]); }; } diff --git a/schematics/ng-update/upgrade-rules/v17/replaceProvideConfig.ts b/schematics/ng-update/upgrade-rules/v17/replaceProvideConfig.ts new file mode 100644 index 0000000000..3b597bb8b7 --- /dev/null +++ b/schematics/ng-update/upgrade-rules/v17/replaceProvideConfig.ts @@ -0,0 +1,37 @@ +import { Rule, SchematicContext, Tree } from '@angular-devkit/schematics'; + +import { DEFAULT_WORKSPACE_PATH, logInfo, readJSON } from '../../../utils'; + +export function replaceProvideConfig(): Rule { + return (tree: Tree, context: SchematicContext) => { + const angularJson = readJSON(tree, DEFAULT_WORKSPACE_PATH); + const projectNames = Object.keys(angularJson.projects); + logInfo(context, `Use provider style (TIPS: References need to be fixed manually)`); + for (const name of projectNames) { + runAlain(tree, name, angularJson.projects[name].sourceRoot, context); + runZorro(tree, name, angularJson.projects[name].sourceRoot, context); + } + }; +} + +function runAlain(tree: Tree, name: string, sourceRoot: string, context: SchematicContext): void { + const filePath = `${sourceRoot}/app/global-config.module.ts`; + if (!tree.exists(filePath)) return; + + const text = '{ provide: ALAIN_CONFIG, useValue: alainConfig }'; + const content = tree.readText(filePath).replace(text, 'provideAlainConfig(alainConfig)'); + tree.overwrite(filePath, content); + + logInfo(context, ` Use provideAlainConfig instead of ALAIN_CONFIG in ${name} project`); +} + +function runZorro(tree: Tree, name: string, sourceRoot: string, context: SchematicContext): void { + const filePath = `${sourceRoot}/app/global-config.module.ts`; + if (!tree.exists(filePath)) return; + + const text = '{ provide: provideNzConfig, useValue: ngZorroConfig }'; + const content = tree.readText(filePath).replace(text, 'provideNzConfig(ngZorroConfig)'); + tree.overwrite(filePath, content); + + logInfo(context, ` Use provideNzConfig instead of NzConfig in ${name} project`); +} diff --git a/src/app/core/code/files/global-config.module.ts b/src/app/core/code/files/global-config.module.ts index 55ec11864b..08b829e404 100644 --- a/src/app/core/code/files/global-config.module.ts +++ b/src/app/core/code/files/global-config.module.ts @@ -1,6 +1,6 @@ export default `import { ModuleWithProviders, NgModule } from '@angular/core'; import { DelonMockModule } from '@delon/mock'; -import { AlainConfig, ALAIN_CONFIG, AlainConfigService } from '@delon/util/config'; +import { AlainConfig, provideAlainConfig, AlainConfigService } from '@delon/util/config'; // Please refer to: https://ng-alain.com/docs/global-config // #region NG-ALAIN Config @@ -11,7 +11,7 @@ import * as MOCKDATA from '../../_mock'; const alainConfig: AlainConfig = { }; const alainModules = [DelonACLModule.forRoot(), DelonMockModule.forRoot({ data: MOCKDATA })]; -const alainProvides = [{ provide: ALAIN_CONFIG, useValue: alainConfig }]; +const alainProvides = [provideAlainConfig(alainConfig)]; // #region reuse-tab diff --git a/src/app/global-config.module.ts b/src/app/global-config.module.ts index a9499abdeb..de661218f9 100644 --- a/src/app/global-config.module.ts +++ b/src/app/global-config.module.ts @@ -3,7 +3,7 @@ import { ModuleWithProviders, NgModule } from '@angular/core'; import { DelonACLModule } from '@delon/acl'; import { DelonMockModule } from '@delon/mock'; -import { AlainConfig, ALAIN_CONFIG } from '@delon/util/config'; +import { AlainConfig, provideAlainConfig } from '@delon/util/config'; // Please refer to: https://ng-alain.com/docs/global-config // #region NG-ALAIN Config @@ -44,7 +44,7 @@ const alainConfig: AlainConfig = { } }; -const alainProvides = [{ provide: ALAIN_CONFIG, useValue: alainConfig }]; +const alainProvides = [provideAlainConfig(alainConfig)]; // #endregion