Search code examples
angularjscircular-dependencyangular-http-interceptors

AngularJs Circular Dependency for Interceptor


I have the following circular dependency:

            $http
            /   \
           /     \
          /       \
         /         \
LoginManager------Interceptor
 (service)         (factory)

This Circular dependency only emerged after I added the code for Interceptor.

Interceptor will call the logout function in LoginManager in case a certain response in intercepted.

From what I see, only solution is to move interceptor code inside the LoginManager service as an anonymous factory

Is there any better way?


Solution

  • You can avoid the circular dependency by using the injector service to get an instance of LoginManager at runtime.

    var loginManager = $injector.get('LoginManager');
    

    Just make sure you use this code inside one of the methods of the interceptor (e.g responseError) and not directly in your interceptor creation code.