我正试图将$ winow注入我的工厂。
这是我的工厂和班级定义
export interface IAuthToken {
}
export class AuthToken implements IAuthToken {
storage: Storage;
constructor(private $window: ng.IWindowService) {
this.storage = this.$window.localStorage;
}
factory.$inject = ['$window'];
function factory($window: ng.IWindowService): IAuthToken {
return new AuthToken(this.$window);
}
angular
.module('test')
.factory('app.common.auth.AuthToken', factory);
}
当我调试代码时,$ window总是设置为undefined。我在注册工厂本身时尝试添加注入,我仍然将$ window视为未定义?
function factory($window: ng.IWindowService): IAuthToken {
return new AuthToken(this.$window);
}
angular
.module('test')
.factory('app.common.auth.AuthToken', ['$window',factory]);
非常感谢任何帮助。 提前谢谢。
答案 0 :(得分:3)
你快到了。您需要将工厂声明移到AuthToken
级之外且位于其下方。你可以改为:
```
export interface IAuthToken {}
export class AuthToken implements IAuthToken {
static Id: string = 'app.common.auth.AuthToken';
storage: Storage;
constructor(private $window: ng.IWindowService) {
this.storage = this.$window.localStorage;
}
}
function factory($window: ng.IWindowService): IAuthToken {
return new AuthToken($window);
}
angular
.module('test')
.factory(AuthToken.Id, ['$window', factory]);
```