【发布时间】:2023-03-29 04:06:02
【问题描述】:
我有一个没有打字稿的角度模块和服务,例如:
MyModule = angular.module('MyModule', ['dependency1', 'dependency2']);
MyModule.factory('MyService', ['$otherDependency', function ($otherDependency) {
return {
myOperation: function(){...}
};
}]);
我想在 typescript 类中使用此服务,而不将其他所有内容都转换为 typescript。我尝试了以下方法,但注入的服务始终为空:
/// <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');
【问题讨论】:
-
这是什么注册的?它是控制器吗?工厂? ..
-
你的意思是打字稿类?它只是一个对象。它以前对角度一无所知。
-
那么 Angular 将如何知道该对象并注入您需要的内容,除非您将其注册为 Angular 实体。您也可以尝试使用
angular.injector获取服务实例并在您的对象中使用它。 -
你能举个例子吗?
-
当然.. 像这样.. jsbin.com/difijaga/1
标签: angularjs typescript