Angular 导入模块并通过服务注入传递它的配置

Angular import module and pass it's config with service injection

nestjs 框架中(受到 Angular 的高度启发),当我想在导入模块时传递一些设置(来自 env 文件)时,我执行以下操作:

// nestjs
@Module({
  imports: [
    // usually modules has registerAsync method
    JwtModule.registerAsync({
      imports: [ConfigModule],
      useFactory: async (configService: ConfigService) => ({
        secret: configService.get<string>('JWT_SECRET'),
      }),
      inject: [ConfigService],
    }),
  ]
})
export class AuthModule {}

我实际上在 useFactory 中使用了依赖注入。 Angular 这怎么可能?

这个@Module 看起来和@NgModule 完全一样,所以它是一样的。

https://angular.io/guide/dependency-injection-providers#using-factory-providers

如果需要动态配置导入的模块,可以使用ModuleWithProviders。这正是 RouterModule.forRoot 所做的

https://angular.io/api/router/RouterModule#routermodule