首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将环境变量传递给角库

将环境变量传递给角库
EN

Stack Overflow用户
提问于 2017-04-20 21:07:12
回答 6查看 26.8K关注 0票数 56

我使用angualr2 2-库yeoman生成器创建了公司内部库。

一些角服务在当前应用程序中使用环境变量(api端点在每个env上被更改)。我想知道将当前环境对象传递给angular2库服务的最佳方法是什么?

EN

Stack Overflow用户

发布于 2019-09-03 05:05:19

我认为这里有一个更好的方法

我想你们会发现这很有用:使用抽象类作为可交换行为的依赖注入标记。

我有3个角度应用程序在一个Nx项目,共享一些共同的环境变量。一个公共网站,一个私人门户和一个管理应用程序。在我的库中,我使用了一个定义公共环境变量的抽象环境类。

代码语言:javascript
复制
export abstract class Environment {
  abstract readonly production: boolean;
  abstract readonly appUrls: {
    readonly public: string;
    readonly portal: string;
    readonly admin: string;
  };
}

然后,我将3个environment.ts文件修改如下。

代码语言:javascript
复制
import { Environment } from '@my-lib-prefix/common';

class EnvironmentImpl implements Environment {
  production = false;
  appUrls = {
    public: 'http://localhost:4200',
    portal: 'http://localhost:4201',
    admin: 'http://localhost:4202'
  };
}

environment = environment.prod.ts ();当然,environment.prod.ts与environment.ts是对称的。然后,在根app.module.ts中为每个角度应用程序提供各自的环境依赖关系。

代码语言:javascript
复制
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { Environment } from '@my-lib-prefix/common';
import { environment } from '../environments/environment';

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule],
  providers: [{ provide: Environment, useValue: environment }],
  bootstrap: [AppComponent]
})
export class AppModule {}

现在,任何组件都可以以干净、通用的方式注入环境依赖项。

代码语言:javascript
复制
import { Component } from '@angular/core';
import { Environment } from '@my-lib-prefix/common';

@Component({
  selector: 'my-login',
  templateUrl: './my-login.component.html'
})
export class MyLoginComponent {
  constructor(private env: Environment) {}
}

它强制每个environment.ts实现抽象类中定义的“公共”环境变量。另外,每个EnvironmentImpl都可以使用各自特定于应用程序的特定环境变量进行扩展。这种方法似乎非常灵活和干净。干杯!^_^

票数 5
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43529920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档