2017-01-20 4 views
4

Ich habe diesen Code in meinem DienstGet json aus Datei Typoskript

import {Injectable} from '@angular/core'; 
import {Http, Headers, RequestOptions} from '@angular/http'; 
import 'rxjs/add/operator/map'; 
import {Client} from "../clients/client"; 
import {Observable} from "rxjs/Observable"; 


@Injectable() 
export class ClientsService { 


    private clientUrl = './client.json'; 

    private headers = new Headers({ 'Accept': 'application/json' }); 
    private options = new RequestOptions({ headers: this.headers }); 

    private client : Client; 

    constructor(private http:Http) {} 

    getClient() : Observable<any>{ 
    return this.http.get(this.clientUrl, this.options) 
     .map(res => res); 
    } 
} 

und in meiner Komponente ich es bin Aufruf:

this.client = this.clientsService.getClient() 
    .subscribe(data => { 
    console.log(data); 
    }); 

Aber ich bin immer Fehler 404

enter image description here

Aber ich habe diese json Datei im selben Ordner, wo mein Service ist.

enter image description here

Was ist los?

Antwort

1

Sie müssen den absoluten Pfad von Ihrem Basispfad angeben. Wie, path/to/Services/client.json

Hier ist ein Beispiel: https://plnkr.co/edit/60E2qb9gOjvkEAeR5CtE?p=preview

+0

Wenn ich Verweis kopieren, ist es "src/app/Services/Client" und wenn ich dieses Ergebnis eingeben, ist das gleiche. Wenn ich .json am Endergebnis hinzufügen, ist das gleiche – gsiradze

+0

@gsiradze ist Ihr Basisordner src? Wie wäre es mit 'app/Services/client.json'? – echonax

+0

vielen Dank. Es dauerte meine 5 Stunden – gsiradze

0

Wenn Sie Winkel-cli die JSON-Datei innerhalb Assets Ordner (parallel zur App dir) Verzeichnis

In Ihrem Fall müssen Sie erstellen Datei wie Vermögenswerte halten mit /client.json

return this.http.get('/client.json')) 
    .map((response: Response) => { 
     console.log("mock data" + response.json()); 
     return response.json(); 
    } 
    ) 
    .catch(this.handleError); 
} 

Hinweis: hier gibt es nur Weg geben müssen innerhalb Vermögenswerte wie Vermögenswerte Ordner/client.json dann müssen Sie Pfad wie /client.json schreiben

Wenn Sie Webpack verwenden, dann müssen Sie über die gleiche Struktur innerhalb des Öffentlichen Ordners seine ähnliche Assets-Ordner folgen.