2016-09-30 4 views
0

Ich benutze angular 1.5 mit Typoskript und ich möchte einen Interzeptor erstellen, um Token in den benutzerdefinierten Header einzufügen und auch von jeder Antwort zu aktualisieren.Angular Typescript Abhängigkeitsinjektion explizite Annotation Fehler im strikten Modus

Während des Laufens, erhalte ich die folgende Ausnahme:

Uncaught Error: [$injector:strictdi] function($q) is not using explicit annotation and cannot be invoked in strict mode

class AuthInterceptor implements ng.IHttpInterceptor { 

    $q:ng.IQService; 

    static $inject = ['$q']; 
    constructor($q:ng.IQService) { 
    this.$q = $q; 
    } 

    static factory($q:ng.IQService):AuthInterceptor { 
    return new AuthInterceptor($q); 
    } 


    request = (config:ng.IRequestConfig):ng.IRequestConfig => { 
    // config.headers = config.headers || {}; 
    console.info('Request config md', config); 
    // config.headers['token'] = 'test token'; 

    return config; 
}; 

    response = <T>(response: ng.IHttpPromiseCallbackArg<T>):ng.IPromise<T> => { 
    console.info('Response:', response); 

// modify response 

    return this.$q.when(response); 
}; 

}

let httpConfig = ($httpProvider:ng.IHttpProvider) => { 
    $httpProvider.interceptors.push(AuthInterceptor.factory); 
}; 

angular.module('app').config(httpConfig); 

Haben Sie eine Idee haben, wie kann ich dieses Problem beheben?

Vielen Dank im Voraus.

Antwort

0

Bitte versuchen Sie es. dies ist der einfachste Interceptor für jede Anfrage

app.factory('myInterceptor', function() { 
     var requestInterceptor = { 
      request: function(config) { 
       return config; 
      } 
     }; 
     return requestInterceptor; 
    }); 

    app.config(['$httpProvider', function($httpProvider) { 
     $httpProvider.interceptors.push('myInterceptor'); 
    }]); 
+0

Danke für die Antwort. Allerdings brauche ich $ q für die Überwachung der Antwort. Auch ich muss Typoskript verwenden. – Jhankar

+0

@Jhankar können Sie $ q auch dort verwenden –

+0

Wenn ich $ q als Abhängigkeitsinjektion verwenden, bekomme ich den erwähnten Fehler wegen der Verwendung von strikten Modus. – Jhankar

Verwandte Themen