首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在特定功能模块中创建Angular 6单例服务

如何在特定功能模块中创建Angular 6单例服务
EN

Stack Overflow用户
提问于 2018-08-15 22:21:26
回答 2查看 756关注 0票数 0

总结一下我想要实现的目标:

我希望能够在2个不同的延迟加载功能模块中使用单例服务。该服务不应该在其他延迟/急切加载的功能模块中可用。因此,我想以某种方式确定服务的作用域。据我所知,在angular中,我可以在所有模块中全局注册服务,或者在延迟加载模块的情况下,如果我不使用provideIn:‘根’或经典的旧forRoot逻辑,这些服务将有新的实例。

在这里您可以找到一个准备好的github项目:https://github.com/Norby125/angular-singleton

如果检查结构,从技术上讲,我有一个名为shell的公共模块,它为每个功能模块提供服务,因此这些服务对所有功能模块都是全局可用的。我有两个功能区域,分别称为sub-app1和sub-app2。在子App1中,我想拥有所有核心模块服务的相同实例,但我想让这些服务对子App2模块不可用。重要的是,区域中的所有功能都必须延迟加载,比如feature1和feature2模块。

如果能在这方面有所指导,我将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2018-08-15 23:12:23

当您在功能模块中提供服务时,范围将限制为该功能模块。

为了从功能模块中隐藏一些服务,您可以创建另一个作为main工作的模块,并将功能模块作为同级模块加载。如下所示:

代码语言:javascript
复制
app.module
- main app
- feature module 1
- feature module 2 

并提供必要的事件以允许主模块和特征模块之间的通信。主题和BehaviorSubject

顺便说一句,stackblitz是演示场景的一种很好且简单的方法;)看看这个与你的问题不是100%相关的:https://stackblitz.com/edit/angular-services-di-playground

票数 0
EN

Stack Overflow用户

发布于 2018-08-15 23:14:55

为什么不只在该功能模块中提供服务呢?或者,如果您只在模块内的一个组件中需要它,请让该组件具有一个providers: []

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51860542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档