[英]Angular TypeScript service this is undefined
Here is my Angular TypeScript Interceptor : 这是我的Angular TypeScript 拦截器 :
export module httpMock_interceptor {
export class Interceptor {
static $inject: string[] = ['$q'];
constructor(public $q: ng.IQService) {}
public request(config: any) {
console.log(this);
}
}
}
Here is my module where I am registering as service. 这是我注册为服务的模块 。
import {httpMock_interceptor as interceptor} from './httpMock.interceptor';
var httpMock: ng.IModule = angular.module("httpMockTs", []);
httpMock.service("httpMockInterceptor",interceptor.Interceptor);
httpMock.config.$inject = ['$httpProvider'];
httpMock.config(['$httpProvider', function ($httpProvider: ng.IHttpProvider) {
$httpProvider.interceptors.unshift('httpMockInterceptor');
}]);
When the app starts running, the interceptor constructor initializing the $q service , but when it goes to the method request where I am use this keyword, browser says this is undefined. 当应用程序开始运行时,拦截器构造函数将初始化$ q服务 ,但是当转到使用该关键字的方法请求时,浏览器会说这是未定义的。 Can anyone tell me where I am doing the mistake. 谁能告诉我我在哪里做错了。
And Here is my transpiled code for interceptor 这是我为拦截器编译的代码
export var httpMock_interceptor;
(function (httpMock_interceptor) {
class Interceptor {
constructor(_q) {
this._q = _q;
}
request(config) {
console.log(this);
}
}
Interceptor.$inject = ['$q'];
httpMock_interceptor.Interceptor = Interceptor;
})(httpMock_interceptor || (httpMock_interceptor = {}));
Module 模组
import { httpMock_interceptor as interceptor } from './httpMock.interceptor';
var httpMock = angular.module("httpMockTs", []);
httpMock.service("httpMockInterceptor", interceptor.Interceptor);
httpMock.config.$inject = ['$httpProvider'];
httpMock.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.unshift('httpMockInterceptor');
}]);
export { httpMock };
try using an arrow function that maintains a reference as "this" to the container object or rather interceptor: 尝试使用箭头功能将对容器对象或拦截器的引用保持为“ this”:
public request = (config: any) => { console.log(this); }
For background see: Lambdas and using 'this' @ http://www.typescriptlang.org/Handbook#functions 有关背景,请参见:Lambdas和使用'this'@ http://www.typescriptlang.org/Handbook#functions
根据文档 ,拦截器应该是一个函数,该函数返回具有诸如request
属性的对象文字,因此我猜想在没有任何this
对象的情况下直接调用request
函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.