angular - 路由更改后单例服务重置
问题描述
设置
我有一个单例服务,GlobalSearchService
我正在加载和提供AppModule
。这是为该服务指定提供程序的唯一位置,也是导入该服务的唯一模块。
期望的结果
我这样做是希望GlobalSearchService
充当全局单例,所有加载它的组件都可以访问它并在其构造函数中声明它。
实际结果
单例服务与我上面描述的完全一样,除非并且直到路线改变。每当路由更改时,服务都会重置为没有数据的初始状态。
修复?
我正在寻找一种方法来确保这个全局单例保持其状态,而不管除了破坏性浏览器操作(例如重新加载/刷新等)之外的任何操作。
我试过的
我试过设置forRoot
,虽然我可能做错了,因为我的知识forRoot
有限。我还确保在实际服务providedIn
中设置为。'root'
现在我让应用程序组件在每次路由更改时重置状态,因为服务无论如何都会缓存其状态,但我觉得这不是解决这个问题的正确方法。
解决方案
推荐阅读
- javascript - 如何使用js计算排除周末后的天数
- python - 使用布尔值重复 while 循环
- java - 最后阻止执行
- asp.net - 关闭带有特定 url 的浏览器窗口(由不同的浏览器打开)
- java - 使用 StrategySelectionException 和 BeanCreationException (entityManagerFactory) 启动问题应用程序
- codeigniter - Codeigniter 4 pdf url路由
- windows-7-embedded - 当文本字段在 Chrome 或 Safari 中处于活动状态时,如何强制打开 Windows Embedded PosReady 7 键盘
- skia - 类似于skia中“丢弃”的API
- python - python数据模拟中的最佳工作流程:数组VS字典VS数据框
- mongodb - 使用 Fluentd 将数据传输到 DocumentDB