2017-01-20 85 views
4

獲取JSON我有這樣的代碼在我的服務從文件打字稿

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錯誤

enter image description here

但我有這json文件在我的服務相同的文件夾是。

enter image description here

有什麼不對?

回答

1

您需要從基本路徑給出絕對路徑。如果您在使用角CLI保持資產的文件夾裏面的JSON文件(平行於應用程序目錄)目錄

你的情況,你需要創建像資產文件https://plnkr.co/edit/60E2qb9gOjvkEAeR5CtE?p=preview

+0

如果我複製引用它的'src /應用程序/服務/客戶端',如果我輸入的結果是一樣的。如果我在最後添加.json結果是相同的 – gsiradze

+0

@gsiradze是您的基礎文件夾src? 'app/Services/client.json'如何? – echonax

+0

非常感謝。花了我5小時 – gsiradze

0

:像,path/to/Services/client.json

下面是一個例子/client.json

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

注:在這裏,你只需要給道內的資產文件夾類似資產/ client.json,那麼你需要寫這樣/client.json

路徑

如果你使用webpack,那麼你需要遵循上面相同的結構在公共文件夾裏的類似資產文件夾。