###前提・実現したいこと
Angular2のチュートリアルを参考に勉強しており、Http通信の部分についての質問です。
公式チュートリアルの通り、InMemoryWebAPIをインストールして読み書きを実行することはできたのですが、json形式ファイルなどの外部ファイルを読み書きしたいと思っています。ローカル開発環境でこれは不可能なのでしょうか。
サーバーに上げる前にローカル開発環境でファイルの読み書きをテストできるようにしたいので、おすすめの方法があれば教えてください。
これまでサーバーとのデータのやりとりはPHPでしか書いたことが無いため、InMemoryWebAPIの位置づけなどをあまり理解できていない可能性がありますが、そのあたりも含めておすすめの方法や資料があれば教えていただけると助かります。
###試したこと
ng build
してdist
の内容を物理サーバーにアップロード
→ 物理サーバー上ではファイルのアドレスを指定すればhttp.get
などがとりあえず動くのは確認できた
(ローカル開発環境でそのようなファイル操作をテストしたい)
- Angular2のデフォルトのローカル開発環境をファイル構成を手動で操作できる自前のローカル開発環境で置き換える?
→ そのような方法があるかどうか分からない
###該当のソースコード
公式チュートリアルと少し名前を変えてしまっていますがやることはほとんどそのままです。
CardInfo
というクラスを読み込んでおり、cardinfo.json のようなデータを読み込んで表示する部分です。
ts
1import { Component, OnInit } from '@angular/core'; 2import { HttpModule, Http, Headers } from '@angular/http'; 3 4import 'rxjs/add/operator/toPromise'; 5 6import { CardInfo } from "../../card-info"; 7 8 9@Component({ 10 selector: 'app-cardlist', 11 templateUrl: './cardlist.component.html', 12 styleUrls: ['./cardlist.component.css'] 13}) 14export class CardlistComponent implements OnInit { 15 16 CardInfoList: CardInfo[]; 17 18 constructor( 19 private http: Http 20 ) {} 21 22 ngOnInit() { 23 this.GetCardInfo() 24 .then( CardInfoArray => this.CardInfoList = CardInfoArray ); 25 } 26 27 28 private CardInfoUrl = './cardinfo.json'; 29 // private CardInfoUrl = 'api/cardinfo'; 30 31 private handleError( error: any ): Promise<any> { 32 console.error('An error occurred', error); // for demo purposes only 33 return Promise.reject( error.message || error ); 34 } 35 36 // get CardInfo 37 GetCardInfo(): Promise< CardInfo[] > { 38 console.log( this.CardInfoUrl ); 39 return this.http 40 .get( this.CardInfoUrl ) 41 .toPromise() 42 // .then( response => console.log( response.json().data ) ) 43 .then( response => response.json().data as CardInfo[] ) 44 .catch( this.handleError ); 45 } 46}
json
1// cardinfo.json 2{ 3 "data" : [ 4 { "id": 11, "name": "aaaaaa" }, 5 { "id": 12, "name": "bbbbbb" }, 6 { "id": 13, "name": "cccccc" } 7 ] 8}
###補足情報(言語/FW/ツール等のバージョンなど)
$ ng --version @angular/cli: 1.0.0 node: 6.10.0 os: win32 x64 @angular/common: 4.0.1 @angular/compiler: 4.0.1 @angular/core: 4.0.1 @angular/forms: 4.0.1 @angular/http: 4.0.1 @angular/platform-browser: 4.0.1 @angular/platform-browser-dynamic: 4.0.1 @angular/router: 4.0.1 @angular/cli: 1.0.0 @angular/compiler-cli: 4.0.1
あなたの回答
tips
プレビュー