首页 > 解决方案 > 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>

我的问题是:还有另一种更短的方法来完成这个吗?因为如果您按照前面提到的对应用程序中的每个组件和每个文本字段执行它,这是一项非常耗时且乏味的任务。

谢谢!

标签: angularserviceglobalangular-dependency-injection

解决方案


将数据传递给 localstoragelocalStorage.setItem('itemName',value)或将其设置为 cookie 并在组件构造函数中访问它们并从 localstorage/cookie 中检索数据,然后无需订阅和依赖注入。但是您必须在应用程序加载中获取所有数据。


推荐阅读