2017-04-07 24 views
7

在Angular2你可以有一個文件夾/數據/和JSON文件那裏,你可以在本地主機訪問它:4200 /數據/ something.json。Angular4:如何訪問本地json?

這是Angular4不再可能。

任何IDEEA如何得到它的工作?

+0

angular4 ???它從來沒有聽說過它 – AurA

+1

@AurA在這裏看到什麼是angular2現在http://stackoverflow.com/a/43224781/5043867;) –

+1

酷!感謝您的信息, – AurA

回答

3

您可以使用此代碼

@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)); 

    } 
} 

這裏file.json是您的本地JSON文件。

看到這裏也

也看到了角的CLI路徑

+0

這是我以前在Angular2中所做的。在Angular4中,./file.json路徑不再起作用。 –

+0

@DanNeciu你面臨的錯誤是什麼? –

+0

@DanNeciu也見我更新的答案 –

0

我計算出來的changlog。

在Angular2我有src文件夾下的文件夾。 在Angular4中,你必須在根文件夾中。

實施例:

Angular2:

根/ SRC /數據/ file.json

Angular4:

根/數據/ file.json

+0

你可以將文件放在任何你想要的地方,就像你使用整個路徑一樣,而不是你的請求中的相對路徑:) – Alex

5

當然有可能。讓我們假設這是你的JSON文件

enter image description here


這裏是你的代碼來調用JSON

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; 
     }); 
    } 
} 
+0

在這之後應該在應用模塊中導入什麼模塊? –

+0

@veerendragupta我沒有完全明白你的問題。請詳細說明一下。 –

4

我面臨同樣的問題,我的可觀察角度的服務是位於內'src/app /'文件夾,它試圖加載本地JSON文件。我試圖把JSON文件相同的應用程序文件夾內,一個新的「API」文件夾內,使用各種親戚/絕對的路線,但它並沒有幫助,我得到404錯誤。當我把它放在'資產'文件夾裏的那一刻...... BAM!有效。我想有更多的吧...

可能是這個鏈接可以幫助...

COMPONENT-RELATIVE PATHS IN ANGULAR

+0

它的工作原理!但爲什麼? – mok

+1

我認爲模塊捆綁器webpack默認捆綁了資產文件夾中的所有內容。 –

+0

這是因爲'angular-cli.json'中'assets'數組中指定的所有內容都被複制並投入使用,因此可以在運行時使用。 請參閱https://github.com/angular/angular-cli/wiki/stories-asset-configuration – Nerman

1

您可以使用「要求」太多;

let test = require('./test.json'); 
+0

感謝您的回答 –