2017-03-15 1 views
0

Ich frage mich, ob es möglich ist, einen Teil meiner Import-URL als eine konstante Variable in einer externen Datei zu speichern. Was ich im Sinn haben:AngularJS 2 Variable Import

Projektstruktur:

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

Im tsconfig.json Eigentum baseUrl So zu .

gesetzt ist, wenn ich die Car.ts Komponente in meiner parkingLot Komponente verwenden möchten Ich muss dies tun: import { car } from 'moduleA/src/objects/common/car.ts'.

Was ich verwenden möchte, ist dies: import { car } from object_path + 'car' (während object_path moduleA/src/objects/common/ enthält)

Wenn ich die Projektstruktur von moduleA der Import ändern würde nicht mehr arbeiten, und ich ändern würde jede Einfuhr müssen die zu moduleA bezieht. Gibt es eine Möglichkeit, in einer Datei als Konstante zu speichern und diese Datei dann nur zu importieren?

+0

Warum ändern Sie Ihre Projektstruktur ständig .. Angular haben einen Styleguide. Er erklärt gut, wie Sie Ihr Projekt einrichten sollten. –

+0

@AbdelRaoof Wenn das Projekt wächst, kann es verwirrend werden und braucht mehr Struktur. – SpaceNinjaApe

Antwort

0

Sie können die Variable nicht mit der Zeichenfolge in der import-Anweisung verketten. Angular wirft einen String-Literalfehler, es sei denn, wenn Sie die globale Einstellung definieren und später in der Klasse verwenden möchten.

wird diese Zeile unter String literal Error

import { car } from object_path + 'car' 

Das Beispiel werfen die globale Einstellung wird definiert, und Sie es überall in Ihrer Anwendung

global.ts

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

verwenden können 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() { 

    } 
}