Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how can we use environment variable in angular version >=2

Tags:

angular

I am now reading the angular4 doc, and noticed, there is one folder, environments, and under which, there are multiple environment files, such as environment.ts, environment.prod.ts, if we build using env=prod, then prod environments variable will be used. Now I have one question, how can I get environment variable from the code? I googled the doc quite a lot and there is no mention about this. Can anyone help to tell me how to obtain environment variable values? Thanks

like image 274
user3006967 Avatar asked Jun 19 '17 03:06

user3006967


People also ask

Can angular access environment variables?

Introduction. If you're building an app that uses an API, you'll want to use your API key for testing environments during development and your API key for live environments during production. In Angular, you can create environment variables with the environment.

What is the use of environment TS in angular?

A project's src/environments/ folder contains the base configuration file, environment. ts , which provides a default environment. You can add override defaults for additional environments, such as production and staging, in target-specific configuration files.


2 Answers

Check out envsub for an easy way to build your configuration file src/environments/environment.ts by substituting environment variables into a handlebars template file src/environments/environment.hbs using a package called envsub.

Make sure to delete the environments key from .angular-cli.json.

As an example, the content of src/environments/environment.hbs could be something like:

export const environment = {
    production: ${ MYAPP_PRODUCTION }
};

To substitute MYAPP_PRODUCTION with false run the following from the terminal.

MYAPP_PRODUCTION=false envsub src/environments/environment.hbs src/environments/environment.ts

The resulting file src/environments/environment.ts will be

export const environment = {
    production: false
};

You can add an additional script to package.json to build your configuration file.

"scripts": {
    "config": "envsub src/environments/environment.hbs src/environments/environment.ts",
}

Build your configuration by running something like the following in your terminal:

MYVAR=test npm run config

Remember to exclude src/environments/environment.ts from version control. For git you can use a .gitignore file.

like image 189
C11R Avatar answered Oct 02 '22 17:10

C11R


If you are using CLI then in .angular-cli.json file, place this code. (From angular 6 onward, .angular-cli.json file is renamed to .angular.json)

"environments": {
    "dev": "environments/environment.ts",
    "prod": "environments/environment.prod.ts"
  }

In dev environment file, you can write

export const environment = {
production: false,
url: 'http://something.com'
};

And in prod environment file, you can write

export const environment = {
production: true,
url: 'http://something.com'
}

In components or services, you can use like

import {environment} from '../../environments/environment';
environment.url;

You can command:

ng serve --dev     // Or 
ng serve --prod

Note: you should have environments directory directly in app directory and both environment files should be there.

like image 23
Ketan Akbari Avatar answered Oct 02 '22 17:10

Ketan Akbari