因此,在普通的旧Angular中,您将像这样注入一个Factory:
(function(angular){ "use strict"; var app = angular.module('app', []); app.factory('MyFactory', ['$http', function($http) { .... }); }());
现在使用Typescript,我试图这样使用 $inject :
$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中注入工厂的正确方法是什么?
app.factory(‘MyFactory’, Services.MyFactory) This does not work, never is instantiated.
真正。这是因为 从未使用运算符调用作为第二个参数(MyFactory)传递的函数。如果要使用TypeScript类 ,则必须使用而不是。
new操作员的使用是服务和 工厂之间的唯一区别,因此没有理由使用factory。两者都是AngularJS 中的单例。