【发布时间】:2018-08-30 08:56:32
【问题描述】:
我是 Angular 的新手。 我有一个名为 User 的类:
export class User {
private id: number;
private name: string;
private surname: string;
get Id(): number {
return this.id;
}
set Id(newId: number) {
this.id = newId;
}
get Name(): string {
return this.name;
}
set Name(newName: string) {
this.name = newName;
}
get Surname(): string {
return this.surname;
}
set Surname(newSurname: string) {
this.surname = newSurname;
}
}
...检索用户数组的函数:
getValues() {
this.usersService.getUsers()
.subscribe((users: User[]) => this.dataSource = users);
}
以及从后端 WebApi 检索用户数组的方法:
getUsers(): Observable<User[]> {
return this.http.get<User[]>(this.usersSearchUrl)
.pipe(
tap(users => this.log(`fetched users`)),
catchError(this.handleError('getUsers', []))
);
}
终于从webapi返回的json:
[{"id":"1","name":"Alberico","surname":"Gauss"},{"id":"2","name":"Anassimandro","surname":"Dirac"},{"id":"3","name":"Antongiulio","surname":"Poisson"}]
我原以为调用会自动映射 User 类,而不是它只给我一个 User 类型的数组,事实上如果我在我的组件中写一些东西 .subscribe((utenti: Utente[]) => 控制台.log(utenti[0].Surname));控制台写给我“未定义”。你能告诉我哪里错了吗?谢谢
【问题讨论】:
-
你用的是Http模块还是HttpClient模块?
-
@mast3rd3mon HttpClient,因为他键入了呼叫。
-
我只是在问题状态为 angular 2 时才问,但 http 客户端出现在 angular 4 中
-
通过“Angular 2”,OP 的意思是“Angular”。我一直这样做。
-
我正在使用 HttpClient。抱歉,如果调用确实返回给我一个 User 类型的数组,那么如果我删除了该类的任何属性,我不应该在我的组件中自动看到它,但事实并非如此......
标签: json angular observable