我有一个没有打字稿的角度模块和服务,例如:
MyModule = angular.module('MyModule', ['dependency1', 'dependency2']);
MyModule.factory('MyService', ['$otherDependency', function ($otherDependency) {
return {
myOperation: function(){...}
};
}]);
我想在typescript类中使用此服务,而不将其他所有内容转换为typescript。我尝试了以下内容,但注入的服务始终为null:
/// <reference path="angular.d.ts"/>
module MyTypescriptModule {
export class MyClass extends MyOtherClass {
static $inject = ['MyService'];
constructor(private MyService) { ... }
}
}
这是可能的,如果是的话,我错过了什么?
更新 我能够从他的js bin中使用PSL的建议,稍加修改以避免依赖性错误,并提供此问题的帮助:Call Angular JS from legacy code
var angularInjector = angular.element($("#divWithNgApp")).injector();
MyService = angularInjector.get('MyService');
答案 0 :(得分:0)
export class MyTypescriptModule implements MyTypescriptModule {
public scope: any;
public myService: any;
constructor($scope:any, MyService:any) {
this.scope = $scope;
this.myService= MyService;
}
然后,在您的功能中,您可以使用this.myService
答案 1 :(得分:0)
角度服务只能注入角度“对象”......
如果您的类正由控制器使用,您可以传递一个实例:
module SomeModule {
class MyClass extends MyOtherClass {
constructor(myService:MyService) {
}
}
class MyController {
constructor(myService:MyService) {
MyClass c = new MyClass(myService);
}
}
}
angular.module('app).controller('MyController', ['MyService', MyController]);
一名侦探有助于更好地回答......