2017-08-05 82 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

謝謝,那就是我已經做的。有用。 –