全局模块
//全局模块,必须被注册(导入)一次,最好由根或核心模块注册
import { Global, Module } from '@nestjs/common';
import { FactoryService } from './factory.service';
@Global()
@Module({
providers: [FactoryService],
exports: [FactoryService],
})
export class FactoryModule {}
//注册全局模块
import { FactoryModule } from './global/factory.module';
@Module({
controllers: [AppController],
providers: [AppService],
imports: [FactoryModule],
})
export class AppModule {}
2.动态模块
import { DynamicModule, Module } from '@nestjs/common';
import { ProService } from './pro.service';
@Module({})
export class ProModule {
static register(options: string): DynamicModule {
return {
module: ProModule,
providers: [
{
provide: 'config',
useValue: options,
},
ProService,
],
exports: ['config', ProService],
};
}
}
import { Inject, Injectable } from '@nestjs/common';
@Injectable()
export class ProService {
@Inject('config')
private readonly config;
getHello(): string {
return this.config;
}
}
import { ProModule } from '../pro/pro.module';
@Module({
imports: [
ProModule.register('helloworld'),
],
controllers: [KeywordController],
providers: [KeywordService],
})
export class KeywordModule {}
如果要全局注册,需要增加global参数
import { DynamicModule, Module } from '@nestjs/common';
import { ProService } from './pro.service';
@Module({})
export class ProModule {
static register(options: string): DynamicModule {
return {
global: true,
module: ProModule,
providers: [
{
provide: 'config',
useValue: options,
},
ProService,
],
exports: ['config', ProService],
};
}
}
然后注册一次即可,全局使用
imports: [ProModule.register('helloworld')],