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
Legen Sie es nicht in die Import-Metadaten des Moduls, setzen Sie es in "Anbieter". – pe8ter
Ausgezeichneter Vorschlag. Aber jetzt habe ich ein "Fenster ist nicht definiert" Fehler innerhalb meiner Appsettings.ts – Josh
Compile Fehler oder Laufzeitfehler passiert? – pe8ter