我正在寻找一种方法:
imports
假设我们有一个动态模块A
,可以选择使用动态子模块A1
和A2
。
使用静态配置,很明显如何实现问题中的要求:
@Module({})
export class AModule {
static forRoot(options: AModuleOptions): DynamicModule {
const imports = [];
if (options.includeA1)
imports.push(A1Module.forRoot(options.a1Options));
if (options.includeA2)
imports.push(A2Module.forRoot(options.a2Options));
return {
module: AModule,
imports: imports,
providers: [],
};
}
}
现在想象配置来自一个ConfigModule。 NestJS文档和许多附属模块展示了如何将配置服务注入提供程序以获取选项:
static forRootAsync(options: AModuleAsyncOptions): DynamicModule {
return {
module: AModule,
imports: [ConfigModule],
providers: [
{
provide: 'something',
useFactory: (config: ConfigService) => {
return config.get('somekey');
},
inject: [ConfigService]
}
],
};
}
但是我需要同样的方法来构建子模块/从属模块及其选项的imports
列表。因此,问题在于是否存在最佳实践或其他任何实现方法。