angular - 如果在 2 个延迟加载的模块中使用 Angular 服务,为提供的设置设置什么
问题描述
由于 Angular 6 推荐的方法是使用providedIn
.Injectable
但是如果需要在 2 个延迟加载的模块中使用服务怎么办?
创建共享模块然后在两个延迟加载的模块中导入共享模块是否仍然是最佳实践?
像这样的东西(遵循这个链接以避免循环引用警告):
//Shared module
@NgModule({})
export class SharedModule { }
//Shared service
@Injectable({
providedIn: SharedModule
})
export class SharedService { }
//Lazy loaded modules A and B
@NgModule({
imports: [SharedModule]
})
export class LazyModuleA { }
@NgModule({
imports: [SharedModule]
})
export class LazyModuleB { }
根据第一个答案进行编辑:将有相当(40-80)个服务。
解决方案
我不认为这是一个好主意。因为您在注入器中注入服务以应对可能发生或可能不会发生的情况。当您在 ShareModule 中注入此服务时,此服务在您的应用程序处于活动状态之前一直处于活动状态。让我们想象一个情况你有很多这样的场景,你在注入器中注入了很多消耗内存的服务。我认为最好在lazyLoad 模块级别注入此服务。
推荐阅读
- c# - 使用 Nginx 和 SignalR 在 Linux 上托管 Asp.net Core
- swift - onTapGesture 仅在 ZStack 上部分工作
- angular - 具有动态数据的材料角表
- c++ - 我不明白将字符串转换为 int 的过程
- reactjs - 未处理的拒绝(错误):渲染的钩子比上一次渲染时更多(React Interface GrandStack with ApolloClient)
- c++ - 与 MacOS 上 QJsonObject 的运算符 QDataStream operator>> 不匹配
- javascript - 如何在材质ui的自动完成中获取对渲染标签的引用
- java - 是否可以使特定方法仅与特定构造函数一起使用?
- user-interface - 在 Octave GUI 中调用变量到另一个函数
- java - 在已有大量数据的表上创建 MySQL 索引