导入不在同一文件夹中或周围的模块非常麻烦。你必须继续计算'../'。如下例所示:
import {AnswersService, AddAnswerModel, Answer} from '../../../../../../../BackendServices/AnswersService';
通过将我的System.config修改为下面的示例,我可以解决所有这些'../'并且代码在浏览器上完美运行。
System.config({
packages: {
'app': { defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js' }
},
paths: {
'rxjs/*': 'node_modules/rxjs/*',
'BackendServices/*': 'app/BackendServices/*'
}
});
它将import语句减少到下面的可管理命令。
import {AnswersService, AddAnswerModel, Answer} from 'BackendServices/AnswersService';
但是这种方法的问题在于我在Visual Studio Code中丢失了智能感知。我不确定这是打字稿问题,视觉工作室代码问题还是其他问题。
有没有人知道如何在不失去intellisense的情况下使用它?
Visual Studio只能解析位于node_modules中的相对路径和模块 angular2/*
要么 rxjs/*
。
它是TypeScript默认的moduleResolution(节点)..您可以使用'classic'在tsconfig.json中更改它..但VS Code将不再识别节点模块。
此故障单中讨论了该问题 https://github.com/Microsoft/TypeScript/issues/5039
有很多提议......但还没有实施。
您可以复制由。实现的模式 angular-cli
通过导出您想要的其他所有组件 index.ts
在目录级别。这样,您可以在更高级别公开嵌套组件。
这是一个例子:
parent
├── child
│ ├── child.component.ts
│ └── index.ts
├── parent.component.ts
└── index.ts
内 child/index.ts
只需导出相关组件。
export { ChildComponent } from './child.component';
然后 parent/index.ts
可以继续出口链。
export { ParentComponent } from './parent.component';
export { ChildComponent } from './child';
注意:请注意以上内容如何引用 child.component
文件,但是 child
目录 代替!
该 child
目录的 index.ts
通过导出来表示这些组件 index.ts
。这可以通过深层嵌套组件来完成。
最后,如果是另外一个组件 parent/
想要消耗任何东西 parent/
,它可以在最顶层轻松引用。
import { ParentComponent, ChildComponent } from './parent';