Вам нужно дать абсолютный путь от вашего базового пути. Подобно,path/to/Services/client.json
Вот пример: https://plnkr.co/edit/60E2qb9gOjvkEAeR5CtE?p=preview
У меня этот код в моей службе
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);
}
}
и в моем компоненте я называю это:
this.client = this.clientsService.getClient()
.subscribe(data => {
console.log(data);
});
Но я получаю ошибку 404
Но у меня есть этот json
файл в той же папке, где находится моя служба.
Что не так?
Если вы используете angular-cli Храните файл json в папке папки «Активы» (параллельно с каталогом приложения)
В вашем случае вам нужно создать файл, например assets / client.json
return this.http.get('/client.json'))
.map((response: Response) => {
console.log("mock data" + response.json());
return response.json();
}
)
.catch(this.handleError);
}
Примечание: здесь вам нужно только указать путь в папке с ресурсами, например assets / client.json, тогда вам нужно написать путь, как /client.json
Если вы используете webpack, вам нужно следовать над той же структурой внутри общей папки, что и аналогичная папка с ресурсами.