注入一个工厂使用打字稿AngularJS [英] Inject a Factory in AngularJS using Typescript
问题描述
因此,在普通的旧角,你会注入一个厂,像这样:
(函数(角){
使用严格的; VAR应用= angular.module('应用',[]);
app.factory('MyFactory',['$ HTTP',函数($ HTTP){
....
});
}());
现在使用打字稿,我试图使用 $注
像这样:
模块服务{
出口类MyFactory {
静态$注射='$ HTTP'];
构造函数(私人$ HTTP:ng.IHttpService){
}
}
}VAR应用= angular.module('应用',[]);app.factory('MyFactory',Services.MyFactory)//< - 这是不行的,从来没有被实例化。app.factory('MyFactory',['$ HTTP,Services.MyFactory]); //< - 没有交易,它具有构造函数依赖//看来你必须这样做
app.factory('MyFactory',['$ HTTP',($ HTTP)=>新建Services.MyFactory($ HTTP)]);
什么是角使用打字稿注入工厂的正确方法是什么?
app.factory('MyFactory',Services.MyFactory)这不工作,从来没有被实例化。
块引用>真。这是因为该函数作为第二个参数传递(
MyFactory
)永远不会被调用与新
运营商。如果你想使用一个打字稿类,你的必须的使用服务
,而不是工厂
。在
新
运算符的使用是的只有的服务和工厂之间的差异,所以的没有理由让你使用工厂
。两者都是AngularJS单身。So in plain old Angular, you would inject a Factory like so:
(function(angular){ "use strict"; var app = angular.module('app', []); app.factory('MyFactory', ['$http', function($http) { .... }); }());
Now using Typescript, I am trying to use the
$inject
like so: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)]);
What is the correct way to inject factories in Angular using Typescript?
解决方案app.factory('MyFactory', Services.MyFactory) This does not work, never is instantiated.
True. This is because the function passed as a second argument (
MyFactory
) is never called with thenew
operator. If you want to use a TypeScript class you must useservice
and notfactory
.The usage of the
new
operator is the only difference between a service and a factory, so there is no reason for you to use afactory
. Both are singletons in AngularJS.这篇关于注入一个工厂使用打字稿AngularJS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!