如何在Angular 2应用程序中configuration不同的开发环境

我有一个恒定的文件

export class constants { public static get API_ENDPOINT(): string { return 'https://dvelopment-server/'; } } 

我将它导入我的服务

 private _registrationUrl = constants.API_ENDPOINT+'api/v1/register'; 

如何更改服务器更改的endpont。 我有开发服务器登台服务器和本地服务器。 我想要应用程序来检测环境的变化。

在我的angular1应用程序中,我使用了envserviceprovider。 我可以使用相同的angular2应用程序?

简短的回答:使用Angular CLI 。 它处于testing阶段,但工作得很好,并由Angular Team推荐开始新项目。 有了这个工具,你可以configuration不同的环境。 在构build时,取决于当前的CLI环境, src/client/app/environment.ts将被config/environment.dev.tsconfig/environment.prod.ts取代。

环境默认为dev ,但是您可以通过ng build -prodng serve -prod-prod标志来生成生产版本。 鉴于这是一个新function,可能会有点混乱,所以请查看这个伟大的指南 ,了解如何使用CLI设置Angular环境的其他信息。

希望这可以帮助。

我只想添加一些更多的光照@Cartucho提供的答案。 他对于为您的angular 2应用程序设置个性化环境所需的步骤是正确的。 我还想再次看到, 指南中的文章在不同的环境中构build应用程序

但是,这篇文章错过了重要的一步。 设置个性化环境的步骤如下:1)在项目的environments文件夹中创build一个名为environment.YourEnvName.ts的新文件。 2)在angular-cli.json文件的“environments”对象中添加环境描述。

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

3)一旦你做了这些改变,你可以使用下面的命令为你的新环境构build应用程序。

 ng build --environment=YourEnvName or ng serve --environment=YourEnvName 

希望这篇文章对任何新的Angular 2开发者都有帮助。

 export class endPointconfig { public static getEnvironmentVariable() { let origin = location.origin; let path = location.href.split('/')[3]; let value = origin +'/'+ path + '/api/';`enter code here` return value; } } 

我希望它有帮助。

首先,创builddevelopment.ts,staging.ts,production.tsconfiguration文件。 其次,在你的index.pug中,按以下方式导入环境文件:

  SystemJS.import("#{settings.env}").then(function(env) { System.import("app").catch(console.error.bind(console)); } // Promise.all also works! 

请记住,在nodeJS / Pug / Jade settings.env中包含NODE_ENV值。

最后,你的system.config.ts映射应该有以下几行:

  "development": "myUrl/configs/development.js", "staging": "myUrl/configs/staging.js", "production": "myUrl/configs/production.js", 

我已经通过添加类方法解决了这个问题

 export class config { public static getEnvironmentVariable(value) { var environment:string; var data = {}; environment = window.location.hostname; switch (environment) { case'localhost': data = { endPoint: 'https://dev.xxxxx.com/' }; break; case 'uat.server.com': data = { endPoint: 'https://uat.xxxxx.com/' }; break; default: data = { endPoint: 'https://dev.xxxx.com/' }; } return data[value]; } } 

在我的服务

 private _loginUrl = config.getEnvironmentVariable('endPoint')+'api/v1/login;