将 AMD 模块导入 Angular 2 TypeScript 模块

Import AMD module into the Angular 2 TypeScript module

我在 "test.js" 文件中定义了以下 AMD 模块:

define(
    'myModule',
    function () {
    'use strict';

    return function (module) {

        function myModule(translator) {
            return {
                restrict: 'A',
                link: link
            };

            function link(scope, element, attrs) {                
            }
        }

        return myModule;
    };
});

然后我使用 System.JS 加载这个模块并且模块加载没有任何问题。

我的问题是如何在我的 Angular 2 TypeScript 模块定义中包含该模块?

import myModule = require('myModule');    

以上将不起作用,因为它会抱怨找不到 'myModule'。

我需要能够从我的 Angular 2 模块中的 AMD 模块访问 "link" 函数。

有什么想法吗?

这里是 Demo 关于如何使用现有的 AMD 遗留 mod 规则 Angular 2.

[注意:为了演示目的,我对你的函数做了一些改动]

AMD mod -

define(
  'myModule',
  function() {
    'use strict';

    return function(module) {
        return {
          restrict: 'A',
          link: link
        };

        function link(scope, element, attrs) {
          console.log("Link function called");
        }
    };
  });

这是系统 Js 配置 -

System.config({
  //use typescript for compilation
  transpiler: 'typescript',
  //typescript compiler options
  typescriptOptions: {
    emitDecoratorMetadata: true
  },
  //map tells the System loader where to look for things
  map: {
    app: "./src",
    myModule: './myModule.js'
  },
  //packages defines our app package
  packages: {
    app: {
      main: './main.ts',
      defaultExtension: 'ts'
    },
    legacy: {
      defaultExtension: 'js',
    }
  }
});