如何找到根Angular目录?

时间:2017-03-24 01:48:00

标签: angular angular2-services

编辑:虽然这个问题最初是关于服务的问题,我现在知道服务应该包含在模块中,但核心问题在应用于导入模块时仍然有效。以下是#34;官方"的更新答案。现在这样做的方式是文档已经(有些)进化了。

我有一个我想在我的模块/组件中引用的服务。我的所有服务都在/ _services目录中,当我知道我的服务总是在根目录之外时,我不想在文件系统中向后遍历。如果我将我的组件移动到一个新的子目录中,我希望它能够适应这种简单的更改并且不需要返工。

换句话说,我可以改变这个:

import { ApiService } from './../../_services/api.service';

这样的事情?

import { ApiService } from '$APP_ROOT/_services/api.service';

2 个答案:

答案 0 :(得分:1)

仅仅几个月后,现在可以直接从角度指南得到答案。您可以使用以“app”开头的绝对路径从根目录引用模块。例如,如果要加载共享模块,只需使用此导入:

import { SharedModule } from 'app/shared/shared.module';

这是指南中使用的:

https://angular.io/guide/ngmodule#app-routing

在TypeScript指南中还有一节关于此内容:

https://www.typescriptlang.org/docs/handbook/module-resolution.html

答案 1 :(得分:0)

您可以使用一些允许您执行此操作的库。

如果您使用Webpack,请检查此answer它将解决您的问题

  

Webpack 1

resolve: {
  root: [
    path.resolve(__dirname  + '/src')
  ]
}......
     

Webpack 2

resolve: {
  modules: [
    path.resolve(__dirname + '/src'),
    path.resolve(__dirname + '/node_modules')
  ]
}.....
     

之后你可以使用

import configureStore from "store/configureStore";
     

而不是:

import configureStore from "../../store/configureStore";

如果您不使用Webpack,只需安装Babel Root Import

即可
// Usually
import SomeExample from '../../../some/example.js';
const OtherExample = require('../../../other/example.js');

// With Babel-Root-Importer
import SomeExample from '~/some/example.js';
const OtherExample = require('~/other/example.js');