使用Angular Cli的环境和导入的模块

我在模块中使用angular-cli的环境变量.
当我在另一个项目中导入我的模块时,是否可以在编译和运行时使用我的项目的环境变量?

我的模块

myModule/
    src/
        /app
            my.service.ts
        /environments
            environment.prod.ts
            environment.ts
    app.module.ts
    etc.

我的模块是my.service.ts

import { environment } from './environments/environment';
@Injectable()
export class MyService {
    private title = environment.title;
    showTitle(): string {
        return this.title;
    }
    etc.
}

我的模块的环境.ts

export const environment = {
  production: false,title: 'My Module in dev mode'
}

我的模块的environment.prod.ts

export const environment = {
  production: true,title: 'My Module in prod mode'
}

我的项目

myProject/
    src/
        /app
            app.component.ts
        /environments
            environment.prod.ts
            environment.ts
    app.module.ts
    etc.

我的项目是AppComponent

Component({
  selector: 'app-root',template: `<h1>{{title}}</h1>`
})
export class AppComponent {
    title: string;
    constructor(myService: MyService) {
        this.title = myService.showTitle();
    }        
}

我的项目的环境

export const environment = {
  production: false,title: 'My Project in dev mode'
}

我的项目是environment.prod.ts

export const environment = {
  production: true,title: 'My Project in prod mode'
}

目前,当我运行我的项目时,我看到我的模块处于开发模式,但我想在开发模式下看到我的项目.

有没有办法从’/ src / my-app / environments / environment’导入来自相对网址的import.ts,例如import {environment}?

据我所知,你有一个项目:’MyProject’和一个外部模块’MyModule’,你想在’MyModule’服务’MyService’中导入’MyProject’环境变量.

恕我直言,从设计角度来看,最好将环境变量作为参数传递给您打算使用它的“MyService”.

但是,如果您坚持导入它,要导入两个环境变量,请在my.service.ts中试试这个:

import { myModuleEnvironment } from './environments/environment';
import { myProjectEnvironment } from  '../../../src/app/environments/environment

考虑您的项目文件夹结构:

myProject/
 myModule/
   src/
       /app
           my.service.ts
       /environments
           environment.prod.ts
           environment.ts
   app.module.ts
 src/
    /app
        app.component.ts
    /environments
        environment.prod.ts
        environment.ts
app.module.ts
etc.

更多澄清:

TypeScript导入规则与nodeJS具有相同的约定.如果导入以点开头:

import {library} from './some/library/path';

然后将其视为声明导入的文件的相对路径.但是,如果它是绝对路径(例如,导入angular2组件):

import {Component} from '@angular/core';

因此,Typescript认为这是一个外部模块,它上升到文件树,直到找到package.json文件.然后进入node_modules文件夹,找到与导入名称相同的文件夹(在上例中:@ angular / core).然后在模块的package.json中查找主.d.ts或.ts文件,然后加载它,或者查找与指定文件同名的文件或index.d.ts或index.ts文件.

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...