模块中的Angular 2导出服务

时间:2017-06-20 20:15:46

标签: angular angular2-services

我的目录结构设置如下:

 app 
  |- core
  |   |_identity
  |   |    |_identity.service.ts
  |   |_ http
  |        |_apiClient.service.ts (service for interacting with my api)
  |-user
  |   |- models
  |   |    |-user.ts
  |   |- services
  |   |     | - user.service.ts
  |   |-listComponent
  |
  |-tenant
      |-models
      |   |-tenant.ts
      |- services
           |- tenant.service.ts
      ....

我的tenant.service和我的user.service都注入了我的ApiClient对象(扩展了http服务)。问题是,要引用它,我必须添加

import {ApiClient} from '../../../core/http/apiClient.service'

在我想要注入它的所有组件中。我有一个core.module定义(并导入我的app.module),并希望能够引用我的ApiClient而不必知道目录结构(即我希望能够像http服务一样导入它{ {1}}。

1 个答案:

答案 0 :(得分:0)

这就是模块解析在Typescript中的工作原理。

  

TypeScript将模仿Node.js运行时解析策略   为了在编译时找到模块的定义文件

详细了解here

您可以为常用功能创建一个Angular库,并使用package.json进行安装,以便公共模块位于node_modules文件夹中,就像其他库一样。那么您可以轻松使用所有导出的类型,而无需了解目录路径,如

 import { ApiClient } from 'MyLib';

希望这会有所帮助!!