2016-12-14 12 views
1

こんにちは私はあなたがインターフェイスを実装するクラスを作成することができ、そこからデータを送信してgetサービスから取得して新しいオブジェクトを作成するのだろうかと思います。角2:クラスからオブジェクトを作成する

import { Address } from "./address" 

export interface User { 
    name:  string; 
    password: string; 
    lastNameA: string; 
    lastNameB: string; 
    photo:  string; 
    telephone: string; 
    email:  string; 
    userType: string; 
    active:  string; 
    score:  number; 
    createdAt: string; 
    updatedAt: string; 
    Address: Address; 
} 

これが可能である:私のUserClassコードは次の

import { User } from '../interfaces/user'; 
import { Address } from "../interfaces/address"; 

export class UserClass implements User { 

public id:   number 
public name:   string 
public password:  string 
public lastNameA: string 
public lastNameB: string 
public photo:  string 
public telephone: string 
public email:  string 
public userType:  string 
public active:  string 
public score:  number 
public createdAt: string 
public updatedAt: string 
public Address:  Address 

constructor (id:   number, 
       password:  string, 
       name:   string, 
       lastNameA: string, 
       lastNameB: string, 
       photo:  string, 
       telephone: string, 
       email:  string, 
       userType:  string, 
       active:  string, 
       score:  number, 
       createdAt: string, 
       updatedAt: string, 
       Address:  Address) { 
       this.name  = name 
       this.password = password 
       this.lastNameA = lastNameA 
       this.lastNameB = lastNameB 
       this.photo  = photo 
       this.telephone = telephone 
       this.email  = email 
       this.userType = userType 
       this.active  = active 
       this.score  = score 
       this.createdAt = createdAt 
       this.updatedAt = updatedAt 
       this.Address = Address 
       } 

} 

などの、最後の、インタフェースによって何かあるこの

import { Component, OnInit } from '@angular/core'; 
import { User} from '../interfaces/user'; 
import {UserService} from '../services/user.service'; 
import { UserClass } from '../classes/user-class' 

@Component({ 
    selector: 'up-pros', 
    templateUrl: './pros.component.html', 
    providers: [UserService] 
}) 
export class ProsComponent implements OnInit { 
    public users :User[]; 
    public term: string; 
    constructor(private _httpService: UserService) { } 

    ngOnInit() { 
    console.log(UserClass) 
    this.term= 'INSTRUCTOR'; 
    this._httpService.searchUsers(this.term) 
     .subscribe(
      data => {this.users = new UserClass(data), console.log(data)}, 
      error => alert(error + ' Error Get') 
     ); 
    } 
} 

ような何か?

Supplied parameters do not match any signature of call target. 
[default] Checking finished with 1 errors 

マイサービス:

import {Injectable} from '@angular/core'; 
import {Http, Headers} from '@angular/http'; 
import 'rxjs/add/operator/map'; 
import { User } from '../interfaces/user'; 


@Injectable() 
export class UserService { 
    url= 'http://localhostapi/users'; 

    constructor(private _http: Http){} 


    getUsers(){ 
    return this._http.get(this.url) 
     .map(res => res.json()); 
    } 

    searchUsers(term : string){ 
    return this._http.get('http://localhostapi/listas?user='+term) 
     .map(res => res.json()); 

    } 
    searchUser(term : string){ 
    return this._http.get('http://localhostapi/users/'+term) 
     .map(res => res.json()); 

    } 

    postUsers(user: User){ 

    var headers = new Headers(); 
    headers.append('Content-Type','application/json'); 
    return this._http.post(this.url, user, {headers: headers}) 
    .map(res => res.json()); 
    } 

    updateUsers(user: User, term: string){ 

    var headers = new Headers(); 
    headers.append('Content-Type','application/json'); 
    return this._http.put(this.url+"/"+term, user, {headers: headers}) 
    .map(res => res.json()); 
    } 
} 
+0

ダースの引数を持つコンストラクタを記述しないでください。 –

+0

それでは、私がやっていることや、コンストラクタのダースの引数だけではお勧めできません。 –

+0

これは役立つ可能性があります:http://stackoverflow.com/questions/37520578/javascript-constructor-use-an-object/37520993#37520993 –

答えて

2

dataの構造はUserClassのリストと一致した場合、あなたは、単にすることができます私は、このイムは賛否-component.tsで次のエラーを取得をしようとする場合ので、 do

this._httpService.searchUsers(this.term) 
     .subscribe(
      data => { 
         this.users = data as User[]; 
         console.log(data) 
        }, 
      error => alert(error + ' Error Get') 
     ); 
+0

ありがとうございます。私はそれを試してみましょう。 –

+0

ありがとう、それは働いた。伝統的なモードのようにクラスのインスタンスを作成できない理由を説明できますか? –

+0

もちろん、 "伝統的なモード"のようなインスタンスを作成することができますが、この特別なケースでは、 'User'のリストを' data'として 'User'のリストを引数として取る' UserClass'のコンストラクタは 'ユーザー '。 ** TypeScript **は構造型システムです。 http://www.typescriptlang.org/docs/handbook/classes.html – TheKojuEffect

関連する問題