我想在服务中配置模块配置,但是模块是从装饰器加载的,服务还不是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{
...
}
我想在装饰器中使用服务
答案 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服务相同