我的服务中有此代码
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
文件。
出了什么问题?
答案 0 :(得分:1)
您需要从基本路径中提供绝对路径。比如,path/to/Services/client.json
以下是一个示例:https://plnkr.co/edit/60E2qb9gOjvkEAeR5CtE?p=preview
答案 1 :(得分:0)
如果你使用angular-cli将json文件保存在Assets文件夹(与app dir并行)目录中
在您的情况下,您需要创建像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,那么你需要在公共文件夹中遵循相同的结构,类似于资产文件夹。
答案 2 :(得分:0)
请将此代码添加到 typings.d.ts
文件中declare module "*.json"
{ const value: any;
export default value;
}
declare module "json!*"
{ const value: any;
export default value;
}
,只需使用import * as data1 from 'path.json';