反正有没有阻止服务注入其原始模块之外的方法?
假设我们延迟加载projects.module.ts
,而ProjectsModule
正在导入ProjectsStoreModule
。我在ProjectsStoreModule
中定义了一个服务,我不想将其注入ProjectsModule
,但是可以将其注入ProjectsStoreModule
内部的任何位置。我想知道是否有办法实现这一目标?
注意: ProjectsStoreModule
没有任何组件,因此我无法为组件提供服务。我要隔离的服务将注入作为服务的Ngrx效果。
我做了什么:
我注册了ProjectsService
:
@Injectable({
providedIn: ProjectsStoreModule
})
export class ProjectsService {
...
}
ProjectsModule:
@NgModule({
...
})
export class ProjectsModule {
...
imports: [ProjectsStoreModule]
}
此方法显然引起了很多Circular dependency
警告。
然后我尝试在ProjectsService
装饰器中注册@NgModule
:
@NgModule({
...
providers: [ProjectsService]
})
export class ProjectsStoreModule {
...
}
现在的问题是,通过将ProjectsStoreModule
导入到ProjectsModule
中,我想成为内部服务的服务将在ProjectsModule
中可用。
任何帮助将不胜感激。
不提供它使用模块的提供者数组。如果模块有根服务,则将其注入到该模块的根组件中。或者只是在注入服务的任何组件声明中提供它。这将使该服务仅可用于组件及其子组件。
@Component({
selector: "component",
templateUrl: "./component.component.html",
providers: [
InternalServiceClass
]
})```