Typescript 加载模块通过 AMD 失败

Typescript load module fail via AMD

我用打字稿制作了 AngularJs 应用程序。并使用 requireJs load 'js(compiled ts) file'

我做了一个简单的控制器A

myCtrl.ts

module myApp {
 'use strict';
 interface myMessage extends ng.IScope {
 message: string;
}
export class myCtrl {
 constructor($scope: myMessage) {
   $scope.message = "hello world";
  }
 }
}

然后我在 main.ts

中加载 myApp 文件

myApp.ts

import myController = require('./myCtrl');
module myApp{
'use strict';
angular.module('myApp',[]).controller('myCtrl',myCtrl);
}
angular.bootstrap(document,['myAppDo']);

加载成功但 $scope.message 未更改。

'Cannot read property 'myCtrl' of undefined'

当我更改 myApp.ts 时它工作正常

angular.module('myApp', []).controller('myCtrl', ($scope, $http) => {
  $scope.message = "hello";
});
angular.bootstrap(document,['myApp']);

我该如何解决?

步骤

  1. 添加AMD-dependency
  2. 导入模块

结果码

///<amd-dependency path="here path to your module"/>

import myController = require('myCtrl');

我解决了。首先,添加 'export' 控制器模块

module myApp 

export module myApp 

然后指定路径

import myCtrl = require('./myCtrl');
angular.module('myApp',[]).controller('myCtrl',myCtrl);

import myCtrl = require('./myCtrl');
angular.module('myApp',[]).controller('myCtrl',myCtrl.myApp.myCtrl);

似乎出了点问题,但它有效