我知道Angular2默认的DI Context策略是为了丰富应用程序范围的依赖注入上下文。但我希望有些Injectables
不能全球使用。
这是我想要实现的具体例子。
可能有一个文档解释了如何这样做,但我找不到它。
我想创建一个ServiceModule来区分Public / Exported服务和私有服务。
@Injectable() export class PrivateService{} // Not available in AppModule
@Injectable() export class PubliclyExportedService{ // Available in AppModule
constructor(private privateService: PrivateService) { }
}
// The imported module
@NgModule({
exports: [PubliclyExportedService],
declarations: [PubliclyExportedService],
providers: [
PubliclyExportedService,
PrivateService
]
})
export class ServiceModule {}
// The main module
@NgModule({
imports: [ServiceModule]
})
export class AppModule { }
目标是使用依赖注入,以便PubliclyExportedService
可以使用PrivateService
,但ServiceModule
之外的任何类都无法注入PrivateService
。< / p>
非常感谢任何帮助
答案 0 :(得分:0)
您可以将private
提供程序(服务)用于正在使用该服务的每个组件:
@Component({
...
providers: [
MyPrivateService // <= Using provider into this class
]
})
export class FeatureComponent{
constructor(private _service: MyPrivateSrvice) { }
}
此方法使您无法将Service作为提供者声明到根模块或共享模块中。