2016-05-13 67 views
5

我看到了一些關於無法找到本地文件來打開它們的文章,無論它們是圖像還是數據文件,但沒有一個解決方案適用於我。我的猜測會是我缺少一些配置。Angular 2:在本地.json文件中找不到文件

我正在查找的文件位於與我的app.html和app.ts文件相同級別的名爲「data」的文件夾中。

這是我在app.html,PS我還使用Ionic2:

<ion-menu (click)='getDepartments()' side='right' type='overlay' [content]="content"> 

,並在app.ts文件我有:

getDepartments() { 
    this.http.get('/data/data.json') 
     .map(res => res.json()) 
     .subscribe(
      data => this.departments = data, 
      err => console.log(err), 
      () => console.log('Random Quote Complete') 
     ); 
} 

我試着:

./data/data.json 

data/data.json 

app/data/data.json 

和任何其他路徑。他們都返回一個404文件找不到錯誤。這看起來就像熟悉Angular 2一樣成長的痛苦。在此先感謝

回答

15

以前的答案據說直接放在www文件夾中以使其可用於應用程序。我會說這不是最好的解決方案,因爲在新創建的Ionic2項目中使用.gitignore排除www文件夾。

取而代之的是將其放入src/assets文件夾中,它也將在App中提供,並且不會從git repo中排除(默認情況下)。 然後你可以訪問使用:this.http.get('assets/file.json');

你可以修改.gitignore文件,但你可能會包括其他不必要的文件。

+0

中受傷,我發現這個答案是正確的長期解決方案。對不起,花了這麼長的時間來切換支票 – discodane

+0

沒有汗水,感謝您切換它。 –

-2

您的服務器能夠看到文件夾'/ data'嗎?確保你的JSON文件與你的公共/靜態文件位於同一個目錄中。

+0

這是所有地方,所以我會承擔我的「服務器'/電腦可以看到/ data文件夾。我的項目中沒有公共/靜態文件目錄。 – discodane

+0

在2/4個月後熟悉角度後,我的大腦從你的回答 – DaAmidza

2

我沒有意識到與Ionic合作,它會編譯應用程序文件夾中的所有內容並將其放入www/build文件夾中。因此,當我在未編譯的應用程序文件夾中放置一個路徑時,我沒有意識到我將路徑放入的文件不在我認爲的位置。

所以我做了兩件事,每件都有效。我將這些文件直接放在www文件中(不要將它們放在構建文件中,因爲每次運行離子服務時都會刪除它們),然後相應地修復路徑。或者只是修復路徑,知道當你在app.ts中查找文件時,它需要首先退出www/build。

1

對於任何對解決相同問題感興趣的人。如果您使用的是Angular CLI,並且您希望通過http訪問任何文件夾,如本例中的「data」文件夾。

轉至角CLI.JSON然後添加「文件夾名稱」,這是「數據」下的應用程序 - >資產

"apps": [ 
 
    { 
 
     "root": "src", 
 
     "outDir": "dist", 
 
     "assets": [ 
 
     "assets", 
 
     "favicon.ico", 
 
     "data" 
 
     ],