2017-02-16 12 views
0

によってモデルクラスを拡張:Iは、モデルクラスという名前のユーザを有する可変

export class User { 
constructor(
    public UserId?: number, 
    public Name?: string, 
    public Password?: string, 
    public IsActive?: boolean, 
    public RoleId?: number 
    ) { 
} 

}

NG2選択成分については、私はこれらの特性を必要とする:テキストとIDを。

今、私は

this.userService.getAllUsers().subscribe(
      data => this.users = data, 
      err => this.error(err)); 

を経由して、それらを設定する際に何のテキストとidプロパティはありません。

初期化時にこれらのプロパティを設定できる方法はありますか。

私は毎回と回避策を書くためにwan'tいけない:

data.forEach(g => 
    { 
     g.text = g.Name; 
     g.id = g.Id; 
    }); 

this.users = data; 

答えて

0

それはあなたが別のクラスを導入できるようあなたは、上記のコードでは、とにかく自分のUserクラスにあなたの配列usersを入力していないようですので、この割り当てを扱う場所はmapです。

export class UserSelect { 
    constructor(
    public text: string, 
    public id: number 
    ) { 
} 

し、あなたのサービスで:

getAllUsers() { 
    return this.http...... 
    .map(res => res.json().map(x => new UserSelect(x.Name, x.Id))) 
} 

、その後、あなただけの通常

this.userService.getAllUsers() 
    .subscribe(data => { 
    this.users = data; 
    }) 

その後、あなたはあなたが必要とする適切な性質を有するタイプUserSelectの配列を持っているでしょう購読:)もちろん、これを拡張して、必要なプロパティを含めることができます。users配列をどの程度使用しているかを知らず、その他のプロパティ、または元のプロパティ...

関連する問題