可以从Angular中的模型进行api调用吗?

可以从Angular中的模型进行api调用吗?,angular,Angular,假设我有一个带有服务的角度应用程序:UserService。该服务用于与我们的后端交互,如下所示: getUser(userId: string) { return this.http.get<User>(this.endPoint + '/user/' + userId).pipe( map(data => new User().deserialize(data)), catchError(() => throwError('Us

假设我有一个带有服务的角度应用程序:UserService。该服务用于与我们的后端交互,如下所示:

getUser(userId: string) {
    return this.http.get<User>(this.endPoint + '/user/' + userId).pipe(
        map(data => new User().deserialize(data)),
        catchError(() => throwError('User not found'))
    );
}
import {Deserializable} from './deserializable.model';

export class User implements Deserializable {
  public id: number;
  public firstName: string;
  public lastName: string;
  public position: string;

  deserialize(input: any): this {
   ....
  }

  getFullName() {
    return this.firstName + ' ' + this.lastName;
  }
}
现在我想用一些api函数扩展这个模型。例如,最好有一个user.refresh()函数,它可以到达后端检查用户obj上的更改。但是我不能注入UserService(或者HttpService),因为我的模型不是一个可注入类

可能吗

可以从Angular中的模型进行api调用吗

当然这是可能的,但问题是应该这样做吗

由于您已经尝试拥有独立的逻辑层,这只会打破这种分离,因为模型实体
User
将开始依赖于网络。在
UserService
中包含所需的功能要比在
User
本身中包含好得多


这样,您就可以实现扩展功能和保持代码整洁的目标。

为什么要将这种逻辑放在模型中?通常,模型是指不应包含此类内容的模型。它将在代码中带来很多方便和可读性,以便能够调用user.save()、user.refresh()、user.getFriends()等。该模型表示通常使用接口定义数据类型。它应该在服务或组件中实现。我不同意——它会毫无理由地混淆模型和服务层。毕竟userService.save(user)和user.save(user.save)一样可读,我明白了。模型应该专注于数据(-model),这是有道理的。我可能也把我的问题简化得太多了。请检查我的新问题:-)