我在Angular中有两个服务S1和S2
export class S1 {
constructor(private s2: S2) {
// ...
}
}
我想创建仅适用于S1的S2实例(与对组件相同)
关于如何做到这一点的任何建议?
答案 0 :(得分:1)
我不太确定我能得到你想要的东西,但让我将其分解如下:
您可以将服务注入到另一个服务中,如下所示:
@Injectable()
export class First {
}
@Injectable()
export class Second {
constructor(@Inject(First) first:First){
}
}
请注意,您必须在某处提供服务,并且默认情况下,您可以在app root
答案 1 :(得分:0)
我认为这是不可能的,因为装饰器“ @Injectable”仅添加了providerIn元数据,该元数据定义了哪些注入器通过将其与@NgModule关联来提供注入器。 (请参阅documentation)
也许如果您共享一些具体的用例,我们可以看看是否还有其他解决方法,但是您的应用程序结构设计可能会短缺。
答案 2 :(得分:0)
我想创建仅适用于S1的S2实例(与对组件相同)
好吧,这就是您要做的。您可以在组件范围内提供S1和S2。
@Component({
...
viewProviders: [ S1, S2 ]
})
export class MyComponent { ... }
这意味着S1和S2将是MyComponent
子级可以访问的唯一实例。
S1的单个实例不可能接收到S2的另一个实例,因为您是在构造函数中定义依赖项。