2017-11-16 13 views
0

私はAngular2とTypescriptの初心者です。私は今、学んでいます。私はRESTサービスからデータを取得しようとしていますが、リストを作成して、このデータをサービスから挿入します。 私のAPIリンクはhttp://jsonplaceholder.typicode.com/users/1角2 Typescriptオブジェクトをjsonに構文解析する

ここは私のHttpTestService.tsコードです。

import {Component} from '@angular/core'; 
import {Http} from '@angular/http'; 
import {Headers} from '@angular/http'; 
import {Observable} from 'rxjs/Observable'; 
import {Injectable} from '@angular/core'; 

import 'rxjs/add/operator/map'; 

@Injectable() 
export class HTTPTestService{ 
    constructor(private _http:Http){} 
    getUser(){ 
     return this._http.get("http://jsonplaceholder.typicode.com/users/1") 
     .map(res=>res.json()); 
    }; 
}} 

ここは私のHttpTestComponent.tsです。

import { Component } from '@angular/core'; 
import {HTTPTestService} from './http-test.service'; 
import { User } from './user'; 

@Component({ 
    selector:'http-test', 
    template:` 
    <button (click)="onGet()">Get Data</button><br/> 
    <div>Output:{{getData}}</div><br/> 
    <button (click) = "onPost()">Post Data</button><br/> 
    <div>Output:{{postData}}</div><br/> 
    <button (click) = "onPromiseGet()">Get Data(w Promise)</button><br/> 
    <div>Output:{{getPromiseData}}</div><br/> 
    `, 
    providers:[HTTPTestService] 
}) 

export class HTTPTestComponent{ 
    getData:string; 
    getPromiseData:string; 
    postData:string; 


    constructor(private _httpService:HTTPTestService){} 

    onGet(){ 
    console.log('Getting user now.'); 
    this._httpService.getUser().subscribe(  
     data =>this.getData = JSON.stringify(data), 
     error=>alert(error), 
    ()=>console.log('Finished Get')  
    );   
    }} 

そして、ここで私は私のUserクラスを埋めるか、その後どのように私は私のUserクラスにジェネリックリストを追加するにはどうすればよい私のUser.ts

export class User{ 
    constructor(public id: number,public name:string) { } 
} 

です。

敬具

+0

を印刷します、これを変更するには、id' 'で新しいオブジェクトを作成したいと' name'ののみ、または全体の構造を使用していますが、サーバから受信しましたか? –

+0

サーバは多くのパラメタを送信しますが、IDと名前のみを自分の構造に埋め込みます。それは可能ですか、私はサーバーが送信するすべてのパラメータを記述する必要がありますか? – user1436795

+0

いいえ、Userクラスのジェネリックリストについてもっと詳しく教えてください。これはどういう意味ですか? –

答えて

2

限り、私はあなたの質問を理解し、ちょうど新しいObjectUserの種類を作成し、必要なデータを渡し、あなたのケースでは、それはid and nameです。

private userList: Array<User> = new Array<User>(); 

onGet(){ 
    console.log('Getting user now.'); 
    this._httpService.getUser().subscribe(  
     data => this.parseUser(data), 
     error=>alert(error), 
    ()=>console.log('Finished Get')  
    );   
    } 

parseUser(data) { 
    let user = new User(data.id, data.name); 
    this.userList.push(user); 
} 

だけ Userをインポートするために覚えている private Users: Array<User> = new Array<User>();よう Userの配列を作るユーザーのリストを作成します。

EDIT。テスト目的のために 応答が来たとき

@Component({ 
    selector:'http-test', 
    template:` 
    <button (click)="onGet()">Get Data</button><br/> 
    <div>Output:{{getData}}</div><br/> 
    <button (click) = "onPost()">Post Data</button><br/> 
    <div>Output:{{postData}}</div><br/> 
    <button (click) = "onPromiseGet()">Get Data(w Promise)</button><br/> 
    <div>Output:{{getPromiseData}}</div><br/> 

    <div *ngFor="let user of userList"> 
     <p>Id: {{user.id}}</p> 
     <p>Name: {{user.name}}>/p> 
     <br /> 
    </div> 
    `, 
    providers:[HTTPTestService] 
}) 

angularはデータ:)

+0

data => parseUser(data)は、data => this.parseUser(data)である必要がありますか? – user1436795

+0

ああ、右、私の悪い:) –

+0

あなたの答えに感謝しますが、ターンリストのときは何も来ません。 (this.userList中のvar V) { はconsole.log( "私の最初の要素:" + this.userList [V] .ID)について はconsole.log( 'スタートリスト') 。 } console.log( 'End List') userList.Length = 0.私はそれが解析されなかったと思うし、正しく押さなかったと思う。私は解析する前にデータを取得するので。どこが間違っていますか? – user1436795

関連する問題