Есть ли способ получить доступ к полю службы без внедрения службы в каждый компонент? или, что то же самое: существует ли какая-то концепция «глобального» сервиса в Angular 6?
Мой вариант использования выглядит следующим образом: текстовые метки для полей извлекаются при запуске приложения службой под названием ConfigurationManagementService. Эта служба имеет наблюдаемое поле CurrentApplicationContext$, которое имеет поле объекта ApplicationConfiguration, которое имеет поле объекта Label. (это связано с тем, как настроен бэкэнд).
Теперь: чтобы использовать метки в представлении компонента, я должен внедрить ConfigurationManagementService (здесь как ConfigurationManagement) в каждый компонент, а затем подписаться на него (к счастью, я могу использовать метод прямого асинхронного канала), например:
<button mat-raised-button color="primary">
<mat-icon">add_shopping_cart</mat-icon>
{{ (ConfigurationManagement.CurrentApplicationContext$ | async)?.ApplicationConfiguration?.Label['Buy'] }}
</button>
Мой вопрос: есть ли другой более короткий способ сделать это? Потому что это очень трудоемкая и утомительная задача, если вы выполняете ее, как указано, для каждого компонента и каждого текстового поля в приложении.
Спасибо!