可以将一个打字稿类注入到JavaScript控制器中吗?

时间:2017-11-10 16:26:04

标签: angularjs typescript

我有一个TypeScript类和一个JavaScript控制器。 TypeScript类作为服务工作,而JavaScript控制器需要Typescript类才能使用它。我的问题:我该怎么做?

思考:我知道AngularJS javascript控制器不允许import语句,所以是否可以通过依赖注入来访问TypeScript类及其公共内容?

Javascript控制器:



(function() {
  'use strict';

  angular
    .module('testModule')
    .controller('testModule.TestCtrl', TestCtrl);

  TestCtrl.$inject = [
    'testService' // <--- inject here? Note: not sure about this
  ];

  function TestCtrl(testService) {
    var ctrl = this;

    ctrl.$onInit = function() {
      // do stuff
    };

    ctrl.useTestService = function() {
      this.result = testService.makeItRain();
    };
  }

})();
&#13;
&#13;
&#13;

打字稿服务

&#13;
&#13;
import { SomeStuffThatIsNeeded } from 'some/folder/structure';

export class TestService {

  static $name = 'TestService';
  static $inject = ['$window', '$location'];

  constructor(private $window: any, private $location: any) {
  }

  makeItRain() {
    this.doTheWaterDance();
  }

  private doTheWaterDance(): string {
    return 'get creative!'
  }
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

简短的回答,是的。您需要做的就是使用Angular as a Service注册该类。

import { TestService } from './TestService';
angular
    .module('testModule')
    .service('testService', TestService);