我知道Angular2默认DI上下文策略是丰富应用程序范围的依赖注入上下文。但我希望Injectables
不能在全球范围内使用。带有私有嵌套DI的Angular2模块上下文
下面是我尝试实现的具体示例。
有可能是一个文档解释如何做,但我一直没能找到它。
我想创建一个ServiceModule来区分Public/Exported服务和Private服务。
@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
的。
任何帮助是极大的赞赏
您是否试图从Module中排除PrivateService并将其包含到您使用该服务的@Component本身中? – DDRamone
这是什么问题,除了声明服务? – raj
@DDRamone我无法做到这一点,因为我想要注入私人服务,以便他们可以被嘲笑。如果我遵循你的意思,你会在PubliclyExportedService构造函数中完成一个新的PrivateService()。我对么? – Linvi