2017-02-16 10 views
0

У меня есть именованный пользователь модель класса:Расширить класс модели с помощью переменных

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

}

Для NG2-выбери компонент, мне нужно эти свойства: текст и идентификатор.

Теперь, когда я установил их через

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

нет текста и свойства идентификатора.

Есть ли способ, в котором я могу установить эти свойства при инициализации.

Я не wan't писать каждый обходной путь с:

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

this.users = data; 

ответ

0

Так как кажется, вы не печатаете ваш массив users к вашему User класса в любом случае в приведенном выше фрагменте кода, так что вы могли бы представить еще один класс и где вы обрабатываете это назначение в 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, и если вам нужно другие свойства или исходные свойства ...

 Смежные вопросы

  • Нет связанных вопросов^_^