Nestjs dynamic module, встроенн с forRoot в root module(AppModule). Как сделать inject в child modules?

У меня есть динамический модуль, настроенный в разделе импорта AppModule путем передачи параметров в метод forRoot. Позже я хочу использовать сервис этого модуля в нескольких моих дочерних модулях. Но как предоставить этот настроенный экземпляр этим модулям?

Я могу использовать декоратор @Global для этого динамического модуля, и тогда служба внутри него будет доступна всем модулям. Но вместо этого я хочу предоставить его только нескольким модулям.

@Module({})
@Global()
export class JwtModule {
  static forRoot(options: JwtModuleOptions): DynamicModule {
    return {
      module: JwtModule,
      providers: [
        {
          provide: CONFIG_OPTIONS,
          useValue: options,
        },
        JwtService,
      ],
      exports: [JwtService],
    };
  }
}
@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: `.env.${process.env.ENV}`,
      ignoreEnvFile: process.env.ENV === 'prod',
      validationSchema: Joi.object({
        ENV: Joi.string().valid('dev', 'prod', 'test'),
        DB_NAME: Joi.string().required(),
        TOKEN_SECRET: Joi.string().required(),
      }),
    }),
    GraphQLModule.forRoot<ApolloDriverConfig>({
      driver: ApolloDriver,
      autoSchemaFile: join(process.cwd(), 'src/schema.gql'),
    }),
    TypeOrmModule.forRoot({
      type: 'sqlite',
      database: process.env.DB_NAME,
      synchronize: process.env.ENV !== 'prod',
      logging: true,
      entities: [User],
    }),
    UsersModule,
    CommonModule,
    JwtModule.forRoot({
      tokenSecret: process.env.TOKEN_SECRET,
    }),
  ],
})
 export class AppModule {}
    @Module({
      imports: [
        TypeOrmModule.forFeature([User]),
        // JwtModule.forRoot({ tokenSecret: process.env.TOKEN_SECRET }),
      ],
      providers: [UserService, UserResolver],
    })
    export class UsersModule {}


Ответы (0 шт):