ダミーデータを使用してサーバーを作成しようとしました。
ここに私のSystem.js Configがあります(私はわずかに異なるルーティングを持っているので、これは今までうまく機能するようでした)
System.config({
// baseURL to node_modules
baseURL: '/plugins/dashboard/assets/@@version@@/node_modules',
defaultJSExtensions: true
});
System.import('/plugins/dashboard/assets/@@version@@/app/main')
.then(null, console.error.bind(console));
ここに私のサービスがあります:
import {Injectable} from 'angular2/core';
import {Http, Response} from 'angular2/http';
//import {Observable } from 'rxjs/Observable';
import {Observable} from 'rxjs/Rx';
import {newsLetter} from "../objects/newsLetter";
@Injectable()
export class newsLetterService {
constructor (private http: Http) {}
//Need to change this URL
private _myNewsLetterUrl = "http://epub-core.dev.prisma-it.com:8888/plugins/dashboard/assets/@@version@@/app/data/newsLetter.json"; // URL to web api
getNewsLetter () {
console.log(this._myNewsLetterUrl);
console.log(this.http.get(this._myNewsLetterUrl));
return this.http.get(this._myNewsLetterUrl)
.map(res => <newsLetter[]> res.json().data)
// eyeball objects as json objects in the console | mapping purposes
.do(data => console.log(JSON.parse(JSON.stringify(data))))
.catch(this.handleError);
}
private handleError (error: Response) {
// in a real world app, we may send the error to some remote logging infrastructure
// instead of just logging it to the console
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
}
ただし、コンソールログをconsole.log(data)に変更すると、undefinedが返されます。
私はあちこちを見ましたが、答えはどれも私のケースを解決しませんでした。それはシステムjsの問題かもしれませんが、他のすべてがうまくいくように見えるので、私は本当にこれを修正する方法を見つけることができません。
これはコンソールの応答です:
コンソールの応答:
JSON.stringify(undefined)
はJSONが無効になるため、JSON.parse(JSON.stringify(data))
がスローされます。
コードを次のように変更できます
JSON.parse(JSON.stringify(data || null ))