TypeScript interceptor in AngularJS
angularjs, this, typescript
Solution
It is because of the wrong `this`. Solution:
public request = (config) =>
{
// this.TokenService is undefined here as well as $window or $q which I tried to inject
config.headers = config.headers || {};
if(this.TokenService.Token != "")
config.headers.Authorization = 'Bearer ' + this.TokenService.Token;
return config;
}
To understand why you need this : https://www.youtube.com/watch?v=tvocUcbCupA&hd=1
Problem
I'm having problems setting up a request interceptor in AngularJS using TypeScript The following snippet works, not working variant is commented out. No matter what I inject in the constructor the local variables are undefined in the `request` method. ``` module Services { export class AuthInterceptor { public static Factory(TokenService: Services.ITokenService) { return new AuthInterceptor(TokenService); } constructor(private TokenService: Services.ITokenService) { this.request = (config: ng.IRequestConfig) => { config.headers = config.headers || {}; if(this.TokenService.IsAuthorised()) config.headers.Authorization = 'Bearer ' + this.TokenService.Token; return config; }; } public request: (config: ng.IRequestConfig)=>ng.IRequestConfig; /* THIS IS NOT WORKING public request(config) { // this.TokenService is undefined here as well as $window or $q which I tried to inject config.headers = config.headers || {}; if(this.TokenService.Token != "") config.headers.Authorization = 'Bearer ' + this.TokenService.Token; return config; } */ } } angular.module("Services") .config(($httpProvider: ng.IHttpProvider)=> { $httpProvider.interceptors.push(Services.AuthInterceptor.Factory); }); ```