将 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',
}
}
});
我在 "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',
}
}
});