在angular2中轻松导入自定义类

时间:2016-06-28 08:16:01

标签: typescript angular

假设我有一个大小正在增长的Angular2打字稿解决方案。我有很多小类/对象,按照最佳实践,我将每个类放在自己的文件中。

如果我需要操纵这些对象,我经常会得到这样的长导入列表:

import {Object1} from '../core-data/object1';
import {Object2} from '../core-data/object2';
import {Object3} from '../core-data/object3';
import {Object4} from '../core-data/object4';
import {Object5} from '../core-data/object5';

我希望我可以这样做:

import {Object1, Object2, Object3, Object4, Object5} from '../core-data/CORE_OBJECTS';

我尝试使用Angular团队用于CORE_DIRECTIVES的模式,但它似乎只有通过directives annontation上的Component属性添加。

我真的不想捆绑它/为它制作一个新项目,因为它会让整个过程变得更难 - 它只是一些核心对象,我希望能够在没有太多麻烦的情况下进行调整

处理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:6)

您可以利用Angular2的export from功能。

例如在core.objects.ts文件中:

export {Object1} from '../core-data/object1';
export {Object2} from '../core-data/object2';
export {Object3} from '../core-data/object3';
export {Object4} from '../core-data/object4';
export {Object5} from '../core-data/object5';

然后您可以通过这种方式利用core.objects模块;

import {
  Object1, Object2, Object3, Object4, Object5
} from '../core-data/core.objects';

答案 1 :(得分:2)

没有试图劫持你的答案,只是提供了一些我发现的额外信息:

如果您在index.ts文件夹中创建/core-data并将其内容设为此内容:

export * from './core-terms';

然后你可以得到一个稍微简单的导入语句:

import { Object1, Object2, Object3, Object4, Object5 } from '../core-data/';

无需同时指定文件夹和包含已连接导出的文件:)

编辑:这仍然需要core-terms.ts文件包含导出。您可以使用core-terms.ts文件中的导出替换导出,这样您就不需要额外的文件了。您也可以保留它,然后随着核心数据文件夹的增长,创建更多的子分区文件并连接index.ts中的所有子文件。就这样,index.ts包含所有类,你可以在这里将子类划分为core-terms.ts core-components.ts core-whatever.ts ...