【发布时间】:2020-04-27 15:50:51
【问题描述】:
在我的 Angular 项目中,我有一个从后端返回 User 类的方法:
export class User {
id: string;
name: string;
my_list: Array<string>;
get otherNameForMyList() : Array<string> {
return this.my_list;
}
set otherNameForMyList(newList : Array<string>) {
this.my_list = newList;
}
}
所以我这样调用后端:
export class UserService {
getUserFromBE(login: string): Observable<User> {
return this.http
.get<User>(`${environment.apiUrl}/user/${login}`)
.pipe(catchError(this.processHTTPMsgService.handleError));
}
}
但是当我调用此方法并订阅结果时,我不能使用 otherNameForMyList:
let user = new User();
userService.getUserFromBE('mylogin').subscribe(async (u : User)=>{
console.log(u.otherNameForMyList); // undefined
}
但是,如果我这样做,它会起作用:
let user = new User();
userService.getUserFromBE('mylogin').subscribe(async (u : User)=>{
console.log(u.my_list); // ok result
}
console.log(u) 也返回 Object 类型,而不是应有的 User 类型。
现在,如果我在 getUserFromBE 中将 httpclient 调用的结果类型声明为“:Observable”,那么你不应该是用户类型吗?我可以强迫它吗?
显然 api 只返回 my_list 字段。
谁能解释一下为什么 u 是 Object 而不是 User ?
谢谢
【问题讨论】:
标签: javascript angular typescript observable