将模块捆绑到一个"命名空间"

时间:2016-03-23 22:54:49

标签: typescript angular systemjs

我是angular2和system js的新手。

当我使用

import {Component, OnInit} from 'angular2/core';

在我的打字稿类的顶部我知道' angular2 / core'实际上指的是许多不同的类。

我想知道如何在我自己的system.js环境中设置它。

例如,如果我的app文件夹中有一个名为model的文件夹,其中包含一个单独的类,用于每个"对象"在我的项目中:

应用程序/模型/ user.ts 应用程序/模型/ object1.ts 应用程序/模型/ object2.ts 应用程序/模型/ object3.ts

现在为了在我的应用程序的其他部分使用这些类,我必须在我的ts类顶部单独导入每个文件

import {User} from '../../model/user';
import {object1} from '../../model/object1';
import {object2} from '../../model/object2';
import {object3} from '../../model/object3';

如何更改它以便我可以像这样导入:

import {User, object1, object2, object3} from '../../model/';

这是mt当前的system.js设置:

System.config({
    map: { 'app': './Modules/Shifts/app' },
    packages: {
        //sets the root path of the Angular2 App
        'Modules/Shifts/app': {               
            format: 'register',
            defaultExtension: 'js'
        }
    }        
});
System.import('app/boot')
        .then(null, console.error.bind(console));

如何设置?

提前致谢

1 个答案:

答案 0 :(得分:2)

简单的解决方案是创建一个重新导出必要类的帮助文件。

您需要做的是创建一个名为../../model.ts的文件,内容为:

export {User} from './model/user'
export {object1} from './model/object1'
// ...

现在您可以将导入重写为

import {User, object1, object2, object3} from '../../model';

或者您也可以使用../../model/index.ts调整后的路径export {User} from './user'