可以从Angular中的模型进行api调用吗?
假设我有一个带有服务的角度应用程序:UserService。该服务用于与我们的后端交互,如下所示:可以从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
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),这是有道理的。我可能也把我的问题简化得太多了。请检查我的新问题:-)