In Angular2 könnten Sie einen Ordner/data/und eine Json-Datei haben und unter localhost darauf zugreifen: 4200/data/something.json.
Dies ist in Angular4 nicht mehr möglich.
Irgendeine Idee, wie man es zum Laufen bringt?
sie können diesen Code verwenden
@Injectable()
export class AppServices{
constructor(private http: Http) {
var obj;
this.getJSON().subscribe(data => obj=data, error => console.log(error));
}
public getJSON(): Observable<any> {
return this.http.get("./file.json")
.map((res:any) => res.json())
.catch((error:any) => console.log(error));
}
}
hier ist file.json
Ihre lokale Json-Datei.
siehe auch hier
siehe auch das changlog von angle-cli für path
Natürlich ist es möglich. Nehmen wir an, hier ist Ihre Json-Datei
Und hier ist Ihr Code, um den Json anzurufen
import { Injectable } from '@angular/core';
import { Http, Headers, Response } from '@angular/http';
import { Observable } from 'rxjs';
import 'rxjs/add/operator/map'
@Injectable()
export class YourService {
constructor(private http: Http) { }
getAdvantageData(){
let apiUrl = './assets/data/api/advantage.json';
return this.http.get(apiUrl)
.map( (response: Response) => {
const data = response.json();
return data;
});
}
}
Ich war mit demselben Problem konfrontiert, bei dem sich mein Observable Angular-Dienst im Ordner 'src/app /' befand und er versuchte, eine lokale JSON-Datei zu laden. Ich habe versucht, die JSON-Datei in demselben App-Ordner, in einem neuen 'api'-Ordner abzulegen, verschiedene Arten von Verwandten/absoluten Routen verwendet, aber es hat nicht geholfen und ich habe 404-Fehler erhalten. In dem Moment, in dem ich es in den Aktenordner stecke ... BAM !!! es funktionierte. Ich denke, da ist mehr dran ...
Kann dieser Link helfen ...
Sie können auch "erfordern" verwenden.
let test = require('./test.json');
Basierend auf diesem post ist hier die vollständige Antwort für Angular 6+:
Von angle-cli doc kann json als Assets betrachtet werden und vom Standardimport aus ohne Ajax-Anforderung aufgerufen werden.
Nehmen wir an, Sie fügen Ihre json-Dateien im Verzeichnis "your-json-dir" hinzu:
fügen Sie "your-json-dir" in die Datei angle.json ein (:
"assets": [
"src/assets",
"src/your-json-dir"
]
import von Json-Modulen in die Datei typings.d.ts ermöglichen, um TypeScript-Fehler zu vermeiden:
declare module "*.json" {
const value: any;
export default value;
}
importieren Sie die Datei in Ihrer Controller-/Dienst-/sonstigen Datei einfach mit diesem relativen Pfad:
import * as myJson from 'your-json-dir/your-json-file.json';
Sie können Ihren Ordnerspeicherort in Assets.json unter Assets-Tag hinzufügen
"assets": [
"src/favicon.ico",
"src/assets",
"src/api"
],
Ich habe es herausgefunden.
In Angular2 hatte ich den Ordner unter dem SRC-Ordner . In Angular4 muss es sich im Stammordner befinden.
Beispiel:
Angular2:
root/src/data/file.json
Angular4:
root/data/file.json