私はユーザーが追加できる(財務)取引のリストを含む角度アプリに取り組んでいます。これはうまくいきました。サービスから提供された静的リストから、ローカルNode.jsサーバーからデータを取得しようとすることに切り替えようとしています。私はトランザクションのリストを非同期的にフェッチするためにオブザーバを使用しています。角度オブザーバを使用してネットワーク上でデータを取得する
私はAngularのHTTP tutorialと関連するplunkerと一緒に従っています。しかし、サーバーからのデータを見ることはできますが、.subscribe()メソッドを使用して有用なデータセットを取得するのに問題があります。
var TRADES = { "trades": [
{"id": 0, "cust": "Ben", "hasSub": true,
"subcust": "Rigby", "type": "s", "security": "001", "ticket": "99"},
...
{"id": 9, "cust": "Uber Bank", "hasSub": true,
"subcust": "Lil Bank", "type": "p", "security": "456", "ticket": "56"}
]};
////////////Get Requests/////////////////
//this route returns all data in JSON format
app.get('/', function(req, res) {
res.send(JSON.stringify(TRADES));
});
そしてgetTradesから期待される出力:
@Injectable()
export class TradeService {
private url = '...'; // URL to web API
tradeArray: Trade[] = [];
constructor(private http: Http) { }
//-----------GETTERS---------------//
getTradeObservable(): Observable<Trade> {
return this.http.get(this.url)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
console.log("body:" + body);
console.log("Entire Body.trades: " + body.trades);
return body.trades;
}
getTrades(): any {
this.getTradeObservable()
.subscribe(
trade => this.tradeArray.push(trade));
return this.tradeArray;
}
そして、ここでは、関連部分ノードサーバ自体です:
はここでノード・サーバーに接続し、私のサービスです:
[
{id: 0, cust: "Ben", hasSub: true,
subCust: "Rigby", type: "s", security: '001', ticket: '99'},
...
{id: 9, cust: "Uber Bank", hasSub: true,
subCust: "Lil' Bank", type: "p", security: '456', ticket: '56'},
];
と場所のひとつサービスがに注入して呼び出されます。
export class SubmittedComponent {
constructor(private tradeService: TradeService) { }
//initally show all trades
rows = this.tradeService.getTrades();
...
私は、「全体body.tradesは、」私はしたいデータの完全なリストであることをブラウザコンソールで見ることができますしかし、それは未定義に終わるtradeArrayにそれらをプッシュしないことを購読しているようだ。
ありがとうございます。
サービスを呼び出すコンポーネントを投稿できますか? Btw、それはあなたのサービスの中で購読する悪い習慣です。あなたのサービスは観測可能なものだけを返すべきです –
投稿を更新しました。加入者のヒントをありがとう、私はそれを見ていきます。 –
@ Jota.Toledoあなたはサービス内で絶対に購読することができますが、それでも観察可能なものを公開しています。私はここに書いています:http://blog.jonrshar.pe/2017/Apr/09/async-angular-data.html – jonrsharpe