我无法在Angular中弄清楚。
我有2个模块,每个模块都使用 MyService ,但是我希望为每个模块以不同的方式(非单项服务)配置此服务。
让我们说:
export class MyService {}
@NgModule({
provider: [{ provide: MyService, useValue 'A' }]
}
export class ModuleA {
constructor(test MyService) {
console.log('ModuleA :', test); // expecting A
}
}
@NgModule({
provider: [{ provide: MyService, useValue 'B' }]
}
export class ModuleB {
constructor(test MyService) {
console.log('ModuleB :', test); // expecting B
}
}
但是 MyService 对于两个模块(单个)具有相同的值,取决于先启动的模块是A还是B。
例如,我将拥有:
模块A:A
ModuleB:A
我希望每个模块都有不同的注入,如模块配置中所述。
答案 0 :(得分:0)
延迟加载模块将创建所提供服务的单独实例。 more info
您也可以尝试使用@Inject()
。
export class MyService {}
@NgModule({
provider: [{ provide: 'MyServiceA', useClass: MyService }]
}
export class ModuleA {
constructor(@Inject('MyServiceA') test: MyService) {
//new instance of MyService
}
}
@NgModule({
provider: [{ provide: 'MyServiceB', useClass: MyService }]
}
export class ModuleB {
constructor(@Inject('MyServiceB') test: MyService) {
//new instance of MyService
}
}