angular - Angular 服务全局注入
问题描述
有没有办法在不将服务注入每个组件的情况下访问服务的字段?或等效地:Angular 6 中是否存在一些“全局”服务的概念?
我的用例如下: 字段的文本标签在应用程序启动时由名为 ConfigurationManagementService 的服务检索。该服务有一个可观察的字段 CurrentApplicationContext$,它有一个对象字段 ApplicationConfiguration,它有一个对象字段标签。(这与后端的设置方式有关)。
现在:要在组件视图中使用标签,我必须将 ConfigurationManagementService(此处为 ConfigurationManagement)注入每个组件,然后订阅它(幸运的是我可以使用直接异步管道方法),如下所示:
<button mat-raised-button color="primary">
<mat-icon">add_shopping_cart</mat-icon>
{{ (ConfigurationManagement.CurrentApplicationContext$ | async)?.ApplicationConfiguration?.Label['Buy'] }}
</button>
我的问题是:还有另一种更短的方法来完成这个吗?因为如果您按照前面提到的对应用程序中的每个组件和每个文本字段执行它,这是一项非常耗时且乏味的任务。
谢谢!
解决方案
将数据传递给 localstoragelocalStorage.setItem('itemName',value)
或将其设置为 cookie 并在组件构造函数中访问它们并从 localstorage/cookie 中检索数据,然后无需订阅和依赖注入。但是您必须在应用程序加载中获取所有数据。
推荐阅读
- javascript - 如何加载外部 js 文件并在 reactjs 中使用它们的数据?
- gridview - GridView::Widget 从另一个表中搜索数据
- python-3.x - 如何对 DataFrame 的一列进行分组,同时在另一列中附加相应的行并乘以其列中自身的数量?
- ios - 在 Info.plist CFBundleSupportedPlatforms 或 modplug 的 Mach-O LC_VERSION_MIN 中找不到平台系列
- python - Raspberry Pi - 捕获 GPIO 输入并忽略其他输入 10 秒
- android - 如何从 Android 应用程序获取代码中的 CPU 温度?
- ios - 是否可以在 AudioKit 链中使用 AUv3 扩展中的 AVAudioUnit?
- javascript - 使用 JavaScript 生成首字母缩略词
- c# - 通过 TCP 的 2 个程序之间的本地连接问题
- excel - 159/5000 如果自动复制另一个工作表中的数据,如何保护Excel中的工作表?