2017-08-05 85 views
2

如何在Angular 2 CLI项目中为开发和生产环境声明2个不同的代理URL?例如,虽然在开发模式下,我想用Angular 2 CLI中基于环境的不同代理配置

{ 
    "/api/*": { 
     "target": "http://localhost:3000", 
     "secure": false 
    } 
} 

,但在生产模式下,我会用

{ 
    "/api/*": { 
     "target": "http://api.exampledomain.com", 
     "secure": false 
    } 
} 
+0

中定义的api路径在src->环境中,有2个文件; 1个用于开发,1个用于产品。 – echonax

+0

是的,有。但是为了使代理配置正常工作,我们需要将上面的代码添加到json文件中。例如proxy.config.json。然后通过'ng serve --proxy-config proxy.config.json'调用这个文件。那么有没有一种方法可以根据环境来改变它? –

+0

因此,不能创建2个不同的文件,并指出运行命令时将其作为--proxy-config文件? – echonax

回答

1

我不相信你可以通过环境文件控制代理功能。另一种可能是,当你运行你的构建来定义你的API域环境中的文件

// environment.ts 
export const environment = { 
    production: false, 
    api: 'http://localhost:3000' 
}; 

// environment.prod.ts 
export const environment = { 
    production: true, 
    api: 'http://api.exampledomain.com' 
} 

然后在TS源文件拉域从环境文件

// some service 
import { Injectable } from '@angular/core'; 
import { environment } from '../../../environment.ts'; 
import { Http } from '@angular/http'; 

@Injectable() 
export class SomeService { 
    constructor(private http: Http); 

    getData(){ 
     return this.http.get(environment.api + '/rest-of-api'); 
    } 
} 

现在或服务的命令,他们将使用在环境文件

+0

谢谢,那就是我已经做的。有用。 –