Ham*_*nam 5 dependency-injection lazy-loading angular-services angular-module angular
是否有办法防止服务被注入到其原始模块之外?
假设我们正在projects.module.ts延迟加载并ProjectsModule导入ProjectsStoreModule. 我定义了一个服务ProjectsStoreModule,我不想将其注入到 中ProjectsModule,但可以将其注入到 中的任何位置ProjectsStoreModule。我想知道是否有办法实现这一目标?
注意: ProjectsStoreModule没有任何组件,因此我无法向组件提供服务。我想要隔离的服务将被注入到 Ngrx Effect 中,这是一个服务。
我做了什么:
我注册了ProjectsService:
@Injectable({
providedIn: ProjectsStoreModule
})
export class ProjectsService {
...
}
Run Code Online (Sandbox Code Playgroud)
项目模块:
@NgModule({
...
})
export class ProjectsModule {
...
imports: [ProjectsStoreModule]
}
Run Code Online (Sandbox Code Playgroud)
这种做法显然引起了如此多的Circular dependency警告。
ProjectsService然后我尝试在装饰器中注册@NgModule:
@NgModule({
...
providers: [ProjectsService]
})
export class ProjectsStoreModule {
...
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,通过将 导入ProjectsStoreModule到 中ProjectsModule,我想要成为内部服务的服务将在 中可用ProjectsModule。
任何帮助将不胜感激。
不要使用模块的提供者数组来提供它。如果模块有根组件,则将服务注入到模块的根组件上。或者只是在注入服务的任何组件声明中提供它。这将使该服务只能由该组件及其子组件访问。
@Component({
selector: "component",
templateUrl: "./component.component.html",
providers: [
InternalServiceClass
]
})```
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1449 次 |
| 最近记录: |