2017-04-07 85 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

感谢您的回答 –