2016-07-27 11 views
0

Ich bin nicht vollständig erfassen Anbieter und kann dies nicht herausfinden. Ich habe eine Klasse mit einem Konstruktor wie so: constructor(private http:Http, private url:string, private ext:string){} Angular2 Provider

Im Bootstrap, wie kann ich feststellen, das DI das Http zu liefern, aber dann zwei Variablen verwenden: environment.url und environment.ext die Saiten zu liefern?

Ich weiß, dass ich Provider verwenden muss, aber es akzeptiert nicht das Token Zeichenfolge und ich muss mehrmals angeben und nur im Fall meiner Klasse, nicht global.

Hinweis: Ich weiß, dass ich nur environment.url und environment.ext in meiner Klasse importieren, aber ich mag diese beiden Parameter über Konstruktor festgelegt haben, um Abhängigkeiten zu minimieren.

+0

Setzen Sie es auf globaler Ebene wie zum Zeitpunkt des Bootstrap Ihrer App? –

+0

Ich folge nicht, können Sie es bitte für mich Demo? – ZaksBack

+0

ich meine, wie andere PROVIDER können Sie auch lokale Variable und Methode global festlegen, so dass dies in der gesamten App verfügbar sein kann. ich hoffe du verstehst es ? –

Antwort

0

Die einfachste Lösung wäre wahrscheinlich, die beiden in eine Klasse zu packen und die Klasse als Provider bereitzustellen. Das Eingeben von Strings ist etwas schwierig (obwohl möglich). Wenn Sie das tun wollen, lesen Sie weiter im Abschnitt Nicht-Abhängigkeiten in der dependency injection guide.

Alternativ, wenn Sie den Pfad des geringsten Widerstandes wollen.

//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

Beachten Sie auch, dass viele Frameworks und Seed-Projekte (z. B. das Webpack-Starter-Projekt) über Mechanismen zum Bereitstellen von Umgebungskonfigurationen verfügen, die sich zwischen Entwicklung und Produktion ändern und an die Sie sich anschließen möchten. Soweit ich weiß, gibt es keine Standard-angular2-Lösung. – Pace

Verwandte Themen