一尘不染

使用Typescript在AngularJS中注入工厂

angularjs

因此,在普通的旧Angular中,您将像这样注入一个Factory:

(function(angular){
    "use strict";

    var app = angular.module('app', []);
    app.factory('MyFactory', ['$http', function($http) {
    ....
    });
}());

现在使用Typescript,我试图这样使用 $inject :

module Services {
    export class MyFactory {
        static $inject = ['$http'];
        constructor(private $http: ng.IHttpService) {
        }
    }
}

var app = angular.module('app', []);

app.factory('MyFactory', Services.MyFactory) //<-- This does not work, never is instantiated.

app.factory('MyFactory', ['$http', Services.MyFactory]); //<-- No deal, it has constructor dependencies

// Seems you have to do this
app.factory('MyFactory', ['$http', ($http) => new Services.MyFactory($http)]);

使用Typescript在Angular中注入工厂的正确方法是什么?


阅读 219

收藏
2020-07-04

共1个答案

一尘不染

app.factory(‘MyFactory’, Services.MyFactory) This does not work, never is
instantiated.

真正。这是因为 从未使用运算符调用作为第二个参数(MyFactory)传递的函数。如果要使用TypeScript类 ,则必须使用而不是。

new操作员的使用是服务和 工厂之间的唯一区别,因此没有理由使用factory。两者都是AngularJS 中的单例。

2020-07-04