2016-07-27 222 views
0

我並不完全掌握提供商,也無法弄清楚這一點。我有一類構造函數像這樣: constructor(private http:Http, private url:string, private ext:string){} Angular2提供商

在引導我如何告訴DI供應的Http但隨後用兩個變量:environment.urlenvironment.ext供應琴絃?

我知道我需要使用提供程序,但它不會接受令牌字符串,我需要指定多次,只在我的類的情況下,而不是全局。

注: 我知道我可以只導入environment.urlenvironment.ext我的類中,但我想有這兩個參數可以通過構造,以儘量減少依賴設置。

+0

將它設置爲全局級別,就像啓動應用程序時一樣? –

+0

我不關注,你能爲我演示嗎? – ZaksBack

+0

我的意思是像其他提供商一樣,您也可以在全球範圍內設置本地變量和方法,以便在整個應用程序中都可以使用。我希望你明白嗎? –

回答

0

最簡單的解決方案可能是將兩者包裝到一個類中,並將該類作爲提供者提供。注入字符串有點困難(儘管可能)。如果你想這樣做,那麼請閱讀標題爲的部分。012xx中的非班級依賴關係

或者,如果您想要阻力最小的路徑。

//environment-config.ts 
export class EnvironmentConfig { 
    constructor(public url:string, ext:string); 
} 

//main.ts (or wherever you call bootstrap) 
config:EnvironmentConfig = {url:"foo", ext:"bar"}; 
bootstrap(RootComponent, [ config, HTTP_PROVIDERS, disableDeprecatedForms(), provideForms()]); 

//foo.component.ts 
constructor(private http:Http, private config:EnvironmentConfig); 
+0

另外,請注意,許多框架和種子項目(例如webpack啓動項目)具有提供在開發和生產之間變化的環境配置的機制,並且您可能想要與之配合。據我所知,沒有標準的angular2解決方案。 – Pace