繁体   English   中英

尝试使用打字稿将$ window注入angular工厂

[英]Trying to inject $window into angular factory using typescript

我试图将$ 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]);

任何帮助将不胜感激。 提前致谢。

你快到了。 您需要将工厂声明移到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]);

```

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM