Angular 5 Dienst zum Lesen einer lokalen .json Datei
Ich bin mit Angular 5 und I've erstellt einen Dienst mit der angular-cli
Was ich tun möchte, ist, einen Dienst zu erstellen, der eine lokale json-Datei für Angular 5 liest.
Dies ist, was ich habe ... Ich'm ein bisschen stecken...
import { Injectable } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
@Injectable()
export class AppSettingsService {
constructor(private http: HttpClientModule) {
var obj;
this.getJSON().subscribe(data => obj=data, error => console.log(error));
}
public getJSON(): Observable<any> {
return this.http.get("./assets/mydata.json")
.map((res:any) => res.json())
.catch((error:any) => console.log(error));
}
}
Wie kann ich das fertig bekommen?
78
3
Zuerst müssen Sie
HttpClient
und nichtHttpClientModule
injizieren, Zweitens müssen Sie.map((res:any) => res.json())
entfernen, da Sie es nicht mehr benötigen, da der neueHttpClient
Ihnen standardmäßig den Body der Antwort liefert. Stellen Sie schließlich sicher, dass SieHttpClientModule
in IhrAppModule
importieren :um dies zu Ihrer Komponente hinzuzufügen:
Sie haben eine alternative Lösung, indem Sie Ihr json direkt importieren.
Um zu kompilieren, deklarieren Sie dieses Modul in Ihrer typings.d.ts-Datei
In Ihrem Code
Ich fand diese Frage bei der Suche nach einem Weg, um wirklich eine lokale Datei zu lesen, anstatt eine Datei vom Webserver zu lesen, die ich eher als "Remote-Datei" bezeichnen würde.
Rufen Sie einfach
require
auf:Der Quellcode der Angular-CLI hat mich inspiriert: Ich habe herausgefunden, dass sie Komponenten-Templates einbinden, indem sie die Eigenschaft
templateUrl
durchtemplate
und den Wert durch einenrequire
-Aufruf der eigentlichen HTML-Ressource ersetzen.Wenn Sie den AOT-Compiler verwenden, müssen Sie die Node-Type-Definitionen hinzufügen, indem Sie
tsconfig.app.json
anpassen: