2016-11-13 3 views
1

Ich benutze Angular 2 innerhalb einer ASP.NET Core-Anwendung, aber das ist nicht wichtig für dieses Problem. Teil meiner aktuellen Aufgabe ist es, Konfigurationswerte vom Server in meine eckige Anwendung zu bekommen.Angular 2 injizierbare AppSettings Klasse

Ich habe die Einstellungen bis hin zu dem Punkt fließt, dass ich eine Einstellung in meinem Layout wie so schreibe:

<script> 
    var BASE_WEB_API_URL = '@appSettings.BaseUrls.Api'; 
</script> 

Und das funktioniert, was ich durch einen Blick auf das Markup überprüft haben. Nun, was ich will, ist eine Appsettings-Klasse, die ich über DI in meine Dienste und Komponenten, die es brauchen injizieren kann. Hier ist, was ich bisher:

import { Injectable } from '@angular/core'; 

@Injectable() 
export class AppSettings { 
    public BASE_WEB_API_URL: string = window['BASE_WEB_API_URL']; 
} 

Sehr einfach und geradlinig und es sollte mir erlauben, meine Server-Variablen zu injizieren. Allerdings bekomme ich einen Fehler, wenn ich versuche, es zu benutzen.

Also, ich dachte mein Problem war, dass es nicht in den Importen in meinem App-Modul aufgeführt war. So habe ich es nur um diesen Fehler zu erhalten:

Error: Unexpected value 'AppSettings' imported by the module 'AppModule'

So googeln diese Fehler führen mich zu einem Post sagen, es vielleicht in dem Bootstrap-Abschnitt sein muß, also versuchte ich, dass im nächsten nur eine neue Fehlermeldung zu erhalten .

Error: No Directive annotation found on AppSettings

Ich bin sehr grün zu Angular 2, so dass diese Fehler mich abwerfen. Irgendwelche Gedanken darüber, was ich falsch mache?

Danke

+2

Legen Sie es nicht in die Import-Metadaten des Moduls, setzen Sie es in "Anbieter". – pe8ter

+0

Ausgezeichneter Vorschlag. Aber jetzt habe ich ein "Fenster ist nicht definiert" Fehler innerhalb meiner Appsettings.ts – Josh

+0

Compile Fehler oder Laufzeitfehler passiert? – pe8ter

Antwort

1

Put injizierbaren in Ihr providers Metadaten-Modul, nicht imports.