How to inject service to angular constant How to inject service to angular constant angularjs angularjs

How to inject service to angular constant


this is not possible for two reasons.

  1. constant can not have dependencies (see table bottom https://docs.angularjs.org/guide/providers)

  2. constants and provider are available in .config functions (config phase), but services ($locale) are available only later (in .run function/phase)

Alternatively you can create service-type factory, which can have dependencies and can create object or primitive

angular.module('app')  .factory('LOCALE_ID', function($locale) {      return {'LOCALE': $locale.id.slice(0, 2)}  })


You can manually grab $locale with the $injector. Observe the following...

app.constant('SOME_CONSTANT', {     'LOCALE': angular.injector(['ng']).get('$locale').id.slice(0, 2) });

JSFiddle Example