如何在导入装饰器中使用服务进行角度模块配置?

时间:2019-08-05 05:30:03

标签: angular typescript angular-module angular-library

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

例如,我使用this答案

例如服务中的方法是可观察的,这是配置

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{
  ...
}

我想在装饰器中使用服务

1 个答案:

答案 0 :(得分:0)

已经解决。 在装饰器内部无法使用服务。

要解决此问题,请在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服务相同