如何从 return 模型的服务中获取 class 函数

How to get class function from a service that return a model

我有一个 class (userName),它的属性定义了一个模型(从 json 转换而来)。 这个class还有一个简单的功能就是return全名:

export class userName {
    firstName: string;
    lastName: string;
    get fullName() {
     return `${this.firstName} ${this.LastName}`
    }

我有一项服务 return 一组用户:

getUsers() : Observable<userName[]>
{
 return this.http.get<userName[]>(<path>);
}

现在 - 我从服务中获取集合到组件中。当我迭代集合时,我想像 fullName 属性 一样获取 firstName + LastNamne,但它不是服务 return 模型的一部分。有没有办法在不创建我自己的扩展的情况下达到它?

更新用户名 class 以获得构造函数:

export class userName {
    firstName: string;
    lastName: string;
    get fullName() {
     return `${this.firstName} ${this.LastName}`
    }

    constructor(jsonObject = {}) {
      this.firstName = jsonObject.firstName ? jsonObject.firstName : null;
      this.lastName  = jsonObject.lastName ? jsonObject.lastName : null;
    }
}

将 http 可观察响应映射到您的对象

this.usersService.getUsers()
  .pipe(
    map(res => {
      return res.map((item) => new userName(item));
    })
  )
  .subscribe(users => {
    // console.log(users[0].fullName)
  })

当您从服务接收到对象时,尝试使用地图功能:

getUsers().pipe(    
    map(user => users.map(user => {
       return {
         firstName: user.firstName,
         lastName: user.lastName,
         fullName: user.firstName + user.lastName   
   }))
);

Class:

export class userName {
  firstName: string;
  lastName: string;
  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  }

  constructor(firstName: string, lastName: string) {
    Object.assign(this, { firstName, lastName });
  }
}

服务:

getUsers() : Observable<userName[]> {
    return this.http.get<userName[]>(<path>).pipe(map((user: userName) => new userName(user.firstName, user.lastName));
  }