You can inject it manually:
myApp.config(function() {
var $cookies;
angular.injector(['ngCookies']).invoke(['$cookies', function(_$cookies_) {
$cookies = _$cookies_;
}]);
// here you can use $cookies as usual
});
You might wonder why do we have to specify ngCookies
to the injector()
call as WELL as to the .invoke()
call?
ngCookies
is name of the module (you'll need to have angular-cookies.js in your project to be able to use this module). When you create injector by calling injector()
you specify which modules should be used so that services from those modules can be used.
invoke()
calls a function but let's you specify which services (provided by various modules) should be passed into the function (in our case service provided by ngCookies
module is named $cookies
)
This solution is a bit of a hack because you are manually creating new injector separate from the one that your angular app auto-creates and uses, but it should be safe because ngCookie
seems to be only using functionalities of angular that don't keep their own state and are just thin wrappers of browser functionality.