1
ローカルのjsonデータファイルをロードしようとしましたが、私は.jsonファイルを/ src/assets/dataに配置していましたが、私が使用しているプロバイダはIonic 3ローカルのjsonファイルをロードするのがアンドロイドで失敗します
0 - {"isTrusted":true}
私はfile:///
部分なしでも試してみました:ローカルブラウザでテストする場合、これはAndroidの上でこれをしようとするだけで、次のエラーテキストを返しながら、ロードされた適切なJSONデータを示してい
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/from';
import 'rxjs/add/observable/throw';
import { Platform } from 'ionic-angular';
/*
Generated class for the JsonProvider provider.
See https://angular.io/docs/ts/latest/guide/dependency-injection.html
for more info on providers and Angular 2 DI.
*/
@Injectable()
export class JsonProvider {
private localApiUrl: string;
private remoteApiUrl: string;
constructor(public http: Http, private platform: Platform) {
//console.log('Hello JsonProvider Provider');
if (this.platform.is('cordova') && this.platform.is('android')) {
this.localApiUrl = "file:///android_asset/www/data";
}
else {
this.localApiUrl = "assets/data";
}
}
GetLocalData(file: string): Observable<any> {
return this.http.get(`${this.localApiUrl}/${file}.json`)
.map(this.extractData)
.catch(this.handleError);
}
GetRemoteData(url: string): Observable<string[]> {
return this.http.get(`${this.remoteApiUrl}/${url}`)
.map(this.extractData)
.catch(this.handleError);
}
GetGareList(): Observable<any> {
return this.GetLocalData("gareList");
}
GetGara(Id: number): Observable<any> {
return this.http.get(`${this.localApiUrl}/gare.json`)
.map(res => {
let body = res.json();
if (body) {
return body.filter(x => { return x.Id == Id })[0];
}
else {
return {};
}
})
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body || {};
}
private handleError(error: Response | any) {
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Observable.throw(errMsg);
}
}
しかし、それはまだwouldnファイルをロードしないでください。