Angular服务全局注入

时间:2018-12-04 09:08:39

标签: angular service global angular-dependency-injection

是否可以在不将服务注入每个组件的情况下访问服务的字段?或等效地:Angular 6中是否存在一些“全局”服务的概念?

我的用例如下:字段的文本标签在应用程序启动时由称为ConfigurationManagementService的服务检索。该服务具有一个可观察字段CurrentApplicationContext $,该对象包含一个对象字段ApplicationConfiguration和一个对象字段Label。 (这与后端的设置方式有关)。

现在:要在组件视图中使用标签,我必须将ConfigurationManagementService(在此称为ConfigurationManagement)注入每个组件,然后订阅它(幸运的是,我可以使用直接异步管道方法),如下所示:< / p>

<button mat-raised-button color="primary">
<mat-icon">add_shopping_cart</mat-icon> 
{{ (ConfigurationManagement.CurrentApplicationContext$ | async)?.ApplicationConfiguration?.Label['Buy'] }}
</button>

我的问题是:还有另一种较短的方法可以做到这一点吗?因为如果按照应用程序中每个组件和每个文本字段的说明执行该任务,这将是一个非常耗时且乏味的任务。

谢谢!

1 个答案:

答案 0 :(得分:0)

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