2016-07-05 90 views
1

如果我有文件的结构是这样的:角2打字稿进口深目录

  • 应用
    • 车型
      • model1.ts
      • model2.ts
      • model3。 ts
      • index.ts
    • 服务
      • serviceGroup1
      • serviceGroup1Service1.ts
      • serviceGroup1Service2.ts
      • index.ts
      • serviceGroup2
      • serviceGroup3
      • index.ts

tsconfig.json:

"compilerOptions": { 
    "declaration": false, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "mapRoot": "/", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "noEmitOnError": true, 
    "noImplicitAny": false, 
    "outDir": "../dist/", 
    "rootDir": ".", 
    "sourceMap": true, 
    "target": "es5", 
    "inlineSources": true 
} 

如何使所有的模型公开,并将其导入这样的: serviceGroup1Service1.ts:

import * as models from 'models'; 

更新文件树

更新的文件

增加了新的barells到system.config.ts

'app', 
'app/models', 
'app/services' 

试图在serviceGroup1Service1.ts使用

import * from 'app/models' 

有一个错误“无法找到模块“应用程序/模型'

但是

import { Component } from '@angular/core' 

效果很好。如何为我的组件做到这一点?

+0

感谢您的回答。但仍有错误“[ts]找不到模块”。 –

回答

1

添加app/models.ts

export * from './models/model1` 
export * from './models/model2` 
export * from './models/model3` 

,现在你可以导入它们:

import * as models from 'app/models'; 

如果你想使用的只是models代替app/models你应该添加SystemJS地图配置,是这样的:

System.config.map = { models: 'app/models' } 
1

以前的答案是有效的,但我注意到angular2模式似乎是“barrels”,你将在模型目录中有一个index.ts,为每个文件执行“从xxx导出*”,然后你将“import * from ./models/“。两种方法都有效,只是我注意到的模式。

可能有一些内置的支持来生成它们(也许在angular-cli中?它在我用它创建组件时生成它们),我只需要一对夫妇并手动生成它们。