使用“export”一词将我的AngularJS服务转换为TypeScript后,可以在TypeScript控制器中导入它...
,但我怎么能用旧控制器注入它?
详细解释,我正在将我的控制器重写为Typescript上的服务,以便为将来的angularjs迁移到angular 2.x 做好准备, 这是使用TypeScript的服务“equipmentAreaStorageT”...
<reference path="../../Scripts/typings/angularjs/angular.d.ts" />
import { UrlService } from '../../Scripts/app/services/urlService';
export class EquipmentAreaStorageT {
keyPrefix = "";
api = "";
index ="";
constructor(private isl3UrlService: UrlService) {
var _this = this;
this.keyPrefix = "EquipmentAreaStorageT";
this.api = "api/equipmentAreaApi/";
this.index = "EquipmentArea";
}
getIndexUrl() {
return this.isl3UrlService.getPath + this.index;
}
}
angular.module('main').service('equipmentAreaStorageT', EquipmentAreaStorageT);
我知道使用Import关键字应足以将其注入TypeScriptController
import { EquipmentAreaStorageT } from '../EquipmentArea/EquipmentAreaStorageT';
export class EquipmentAreaControllerT {
$inject = ["$scope"];
entity = {};
isOpen = false;
gridOptions = {};
isl3SelectionService = {};
isl3DialogService = {};
constructor($scope,private isl3EquipmentAreaStorage: EquipmentAreaStorageT) {
var _this = this;
var ctrl = $controller("baseEditOnGridController", { $scope: this, storage: isl3EquipmentAreaStorage});
ctrl.loadRecords();
}
}
angular.module('main').controller('EquipmentAreaControllerT', EquipmentAreaControllerT);
但我不想将我的所有控制器转换为Typescript ..目前还没有,所以我如何在旧的.js控制器中使用这个新的TypeScript服务。我试过这个例子..
appRoot.controller("EquipmentAreaController", [
"$scope", "equipmentAreaStorageT"
function ($scope, equipmentAreaStorageT) {
$scope.entity = {};
$scope.isOpen = false;
$controller("baseEditOnGridController", { $scope: $scope, storage: equipmentAreaStorageT});
$scope.loadRecords();
}
]);
但我总是得到这个错误。 Object.defineProperty(exports,“__ myModule”,{value:true});
我正在使用visual studio并添加了使用typescript的类型。
答案 0 :(得分:0)
如果只是在控制器中导入服务-它与注入不一样。您只能将导入的值用于打字稿键入。
您应该正确设置您的构建器(webpack,gulp-无论使用什么)以使用打字稿。一切仍将与javascript相同。您仍然需要在某个模块中注册服务并在另一个位置注入。 如果您使用的是AngularJs 1.5+,请考虑使用组件。还要看看ng-annotate(或者是通天塔plugin来简化注入)