0
我創建了一個我想用作HTTP注入器的Typescript類(請參閱代碼...)。它被添加到Angular模塊作爲服務(而不是工廠)。我注意到了一些問題。Angular with Typescript:HTTP注入器工廠與服務
- 當類用大寫字母定義'request'和'response'函數時,注入器不起作用(這些函數從不會被調用)。當用小寫字母定義時,它們被調用。
- 當正確調用函數時,「this」對象引用全局窗口而不是對象。
我通過創建真正的工廠(見代碼...)並將它作爲工廠添加到Angular模塊來解決了這個問題。
但是,我想知道爲什麼會發生這種情況。有什麼想法嗎?
module KernEquity.Angular
{
export interface IHttpInjector
{
request(request: ng.IRequestConfig): ng.IRequestConfig;
response(response: any):any;
}
export function TokenInjectorFactory($rootScope:KernEquity.Angular.IRootScope):IHttpInjector
{
var injector = {
request: function (config:ng.IRequestConfig)
{
if ($rootScope.IsAuthenticated)
{
config.headers["Authorization"] = this.$rootScope.BearerToken.GetTokenHeader();
}
return config;
},
response: function (response:any)
{
return response;
}
}
return injector;
}
export class TokenInjectionService
{
$rootScope: KernEquity.Angular.IRootScope;
static $inject = ["$rootScope"];
constructor($rootScope:KernEquity.Angular.IRootScope)
{
this.$rootScope = $rootScope;
}
request(config: ng.IRequestConfig):ng.IRequestConfig
{
this.$rootScope = null;
return config;
}
Response(response: any):any
{
return response;
}
}
}
注意「請求」與「響應」。前者將被稱爲。後者不會。