2017-02-16 2 views
0

ich ein Modell Klasse mit dem Namen Benutzer:Erweitern einer Modellklasse durch eine variable

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

}

Für NG2-Komponente auswählen, muss ich diese Eigenschaften: Text und ID.

Nun, wenn ich setzte sie über

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

gibt es keinen Text und ID-Eigenschaft.

Gibt es eine Methode, mit der ich diese Eigenschaften bei der Initialisierung festlegen kann.

ich nicht jedes Mal eine Abhilfe schreiben wan't mit:

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

this.users = data; 

Antwort

0

Da es Sie scheint nicht Ihr Array users auf Ihre User Klasse sowieso im obigen Code-Snippet eingeben, so dass Sie eine andere Klasse einführen könnte und wo Sie diese Aufgabe in map behandeln.

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

und in Ihrem Service:

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

und dann abonnieren Sie einfach normal

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

Dann würden Sie ein Array vom Typ UserSelect, die die richtigen Eigenschaften, die Sie brauchen, hat haben :) Natürlich können Sie dies erweitern und alle Eigenschaften, die Sie benötigen, berücksichtigen, ohne zu wissen, in welchem ​​Umfang Sie das users Array verwenden und wenn Sie das benötigen andere Eigenschaften oder ursprüngliche Eigenschaften ...

Verwandte Themen