Angular2では、フォルダー/ data /とそこにjsonファイルを作成し、localhost:4200/data/something.jsonでアクセスできます。
これはAngular4ではもはや不可能です。
それを機能させる方法はありますか?
このコードを使用できます
@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ファイルです。
こちらもご覧ください
パスのangle-cliのchanglogも参照してください
もちろん可能です。ここにあなたのjsonファイルがあると仮定しましょう
そして、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;
});
}
}
Observable Angularサービスが 'src/app /'フォルダー内にあり、ローカルJSONファイルをロードしようとしていた同じ問題に直面していました。JSONファイルを配置しようとしました同じアプリフォルダー内、新しい「api」フォルダー内で、さまざまな種類の親族/絶対ルートを使用しましたが、役に立たず、404エラーが発生しました。「assets」フォルダーに入れた瞬間、動作しました。それ以上のものがあると思いますか?
たぶんこのリンクは役立ちます:
「require」も使用できます。
let test = require('./test.json');
これに基づいて post 、ここにAngular 6+:
angular-cli doc から、jsonはアセットと見なされ、ajaxリクエストを使用せずに標準インポートからアクセスできます。
Jsonファイルを「your-json-dir」ディレクトリに追加するとします。
「your-json-dir」をangle.jsonファイルに追加します(:
"assets": [ "src/assets", "src/your-json-dir" ]
typeson.d.tsファイルへのjsonモジュールのインポートを許可して、TypeScriptエラーを防ぎます。
declare module "*.json" { const value: any; export default value; }
コントローラ/サービス/その他のファイルで、次の相対パスを使用してファイルをインポートします。
import * as myJson from 'your-json-dir/your-json-file.json';
Angular.jsonのAssetsタグの下にフォルダの場所を追加できます
"assets": [
"src/favicon.ico",
"src/assets",
"src/api"
],
私はそれを考え出した。
Angular2では、srcフォルダーの下にフォルダーがありました。 Angular4では、ルートフォルダーに配置する必要があります。
例:
Angular2:
ルート/ src/data/file.json
Angular4:
ルート/データ/ file.json