如何在 angular 模块配置的导入装饰器中使用服务?

How to use service inside import decorator for angular module config?

我想在服务中为模块配置方法,但是模块是从装饰器加载的,服务还不是 DI。如何在加载模块中使用服务?

我使用 this 答案为例

例如服务中的方法是一个 Observable,这里是配置

export interface TranslateConfig {
  someProp?: string;
  anotherProp?: string;
  observeableProp?: Observeable<string>
}

然后在app.module.ts

加载模块
@NgModule({
  imports: [
    TranslateModule.forRoot({
      someProp: someValue,
      anotherProp: anotherValue,
      observeableProp: (method from service)
    })
  ]
})
export class AppModule{
  ...
}

我想在装饰器中使用服务

已经解决。 没有办法在装饰器中使用服务。

要解决此问题,请在 ConfigurableModule 中创建新服务。

@Injectable({
  providedIn: 'root'
})
export class AuthSerivce{

  constructor() { }

  private authFunction: Observable<string>;
}

在你的app.module.ts

@NgModule({
  ...
  imports: [
    ConfigurableModule.forRoot({
      YOUR CONFIG HERE
    }),
  ],
...
})
export class AppModule {
  constructor(
    private configurableModuleAuthService: ConfigurableModuleAuthService
  ) {
    configurableModuleAuthService.authFunction = of("YOUR AUTHENTICATION OBSERVABLE METHOD HERE");
  }
}

在ConfigurableModule内部使用该服务,与普通DI服务相同