我想从Spring Boot API获取一个数组,但无法将数据正确转换为对象
这是我的模特
export class Uczen {
constructor(
public firstname: string,
public lastname: string,
public email: string,
public gender: string,
) { }
}
服务:
getPersons() {
return this.http.get('http://localhost:8080/myApp/persons');
}
这是我的 component.ts 代码
osoby: Uczen[] = [];
ngOnInit() {
this.personService.getPersons().subscribe((result: Uczen[]) => {
for (const item of result) {
this.osoby.push(item);
}
});
console.log(this.osoby[1]);
console.log(this.osoby.length);
}
显示“未定义” 和“ 0” 作为显示,可能是将json转换为对象数组的问题; /
答案 0 :(得分:1)
控制台应该在订阅中,因为这是一个异步过程
this.personService.getPersons().subscribe((result: Uczen[]) => {
for (const item of result) {
this.osoby.push(item);
}
console.log(this.osoby[1]);
console.log(this.osoby.length);
});
答案 1 :(得分:0)
在ts文件中,您具有ngOnInit()方法,ngOnInit是组件的生命周期挂钩,在初始化组件时运行。
1)最初,该控件调用getPersons()方法,这将花费一些时间(几毫秒)来从服务器获取响应。
2)由于异步行为,在我们从远程服务器获得响应之前,控件进入了控制台语句行并执行了它。 此时,变量 osoby 仍然是一个空数组,这就是为什么要访问未定义的空数组的原因。
3)如果您在订阅内编写相同的控制台行,则仅在收到服务器的响应后,对这些行的控件才会运行。
storage