AngularJS 2变量导入

时间:2017-03-15 12:33:30

标签: angularjs angular import structure project

我想知道是否可以将我的导入URL的一部分保存为某个外部文件中的常量变量。 我的想法:

项目结构:

Project
|
+--moduleA
|  |
|  +--src
|     |
|     +--objects
|        |
|        +--common
|           |
|           +--car.ts
|
+--moduleB
   |
   +--src
      |
      +--objects
         |
         +--common
            |
            +--parkingLot.ts

在tsconfig.json中,属性baseUrl设置为.

因此,如果我想在我的Car.ts组件中使用parkingLot组件,我必须执行此操作:import { car } from 'moduleA/src/objects/common/car.ts'

我想要使用的是:import { car } from object_path + 'car'(而object_path包含moduleA/src/objects/common/

如果我从moduleA更改项目结构,导入将不再起作用,我将不得不更改引用moduleA的每个导入。有没有办法在某个文件中存储常量,然后只导入这个文件?

1 个答案:

答案 0 :(得分:1)

您无法将变量与import语句中的字符串连接起来。 Angular将抛出一个String文字错误,除非你想要定义全局设置并在以后的类中使用它,你可以。

此行将抛出String literal Error

import { car } from object_path + 'car'

以下示例将定义全局设置,您可以在应用中的任何位置使用它

<强> global.ts

export class AppSettings {
    public static API_ENDPOINT = 'http://localhost/api/';  
}

<强> car.ts

import {Component, OnInit} from '@angular/core';
import {AppSettings} from '../global';

@Component({
    selector: 'car-component',
    templateUrl: 'car.component.html',
    styleUrls: ['car.component.css']
})

export class CarComponent implements OnInit {
    endpoint:string;

    constructor() {
        this.endpoint = AppSettings.API_ENDPOINT;
    }

    ngOnInit() {

    }
}