2016-07-27 173 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