如何在 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服务相同
我想在服务中为模块配置方法,但是模块是从装饰器加载的,服务还不是 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服务相同