Angular 2 Typescript应用程序。导入时编译错误。如何从根文件夹

时间:2016-02-17 16:26:54

标签: typescript angular systemjs

我正在创建具有以下结构的角度2应用程序:

app
|--components
|   |--folder1
|   |--folder2
|
|--services
|   |--folder1
|   |--folder2
..............

每个文件夹中都有几个文件。因此,当我将服务导入组件时,我需要使用类似这样的东西

import {SomeInfo, SomeInfoService} from './../../services/some/some-data.service';

这是导入服务的有效方式,一切正常。但路径很难看。所以我改变了路径app/services/some/some-data.service应用程序工作正常,但我有一个打字稿编译错误,如

app/components/some/some-detail.component.ts(3,45): error TS2307: Cannot find module 'app/services/some/some-data.service'.

有没有人知道为什么会这样?

2 个答案:

答案 0 :(得分:0)

Typescript编译器认为'app / services / some / some-data.service'是外部模块'app'下面的路径(在node_modules中)并且不会将其视为路径

import {SomeInfo, SomeInfoService} from './../../services/some/some-data.service';

难道不是那么难看,是吗?

修改

您可以在(比方说)export-services.ts中创建(比方说)services文件,该文件将对您的服务进行分组

export * from './some/some-data.service'
export * from './other/other-data-service'
...

然后仅从该文件重新导入

 import {DataService, OtherService,...} from './../../services/export-services'

显然,为了实现这一目标,您无法使用default导出,并且所有导出的组件名称必须是唯一的

答案 1 :(得分:0)

也许你可以在这里找到一些见解:
https://github.com/Microsoft/TypeScript/issues/5039

就代码结构而言,还存在这些讨论:
Issue 5 at coding style guidelines
Issue 10 at coding style guidelines

干杯,
拉夫。
附:我会将此作为评论,但我需要50个声望点。