Angular 角度TS循环通过传入数据
我正试图通过一系列传入的数据进行循环,这样我就可以在地图上的传单中显示信息了 这是我的班级:Angular 角度TS循环通过传入数据,angular,typescript,loops,Angular,Typescript,Loops,我正试图通过一系列传入的数据进行循环,这样我就可以在地图上的传单中显示信息了 这是我的班级: export class OpenStreetMapComponent implements OnInit { @Output() private add = new EventEmitter(); @Output() private edit = new EventEmitter<number>(); artworkList: Artwork[]; 出于某种原因,我的控制台不
export class OpenStreetMapComponent implements OnInit {
@Output() private add = new EventEmitter();
@Output() private edit = new EventEmitter<number>();
artworkList: Artwork[];
出于某种原因,我的控制台不断出现此错误:
错误类型错误:“\u a未定义”.retriveAll()
方法是一种承诺,在尝试使用此.artworkList
之前,您必须等待此方法,或者您可以将以下内容放入中。然后调用的一部分
for (let artwork of this.artworkList) {
console.log(artwork.name);
}
当前,循环与对方法的调用一起异步运行,该方法返回一个承诺
,该方法试图循环通过一个空的this.artworkList
,从而导致问题。.retriveAll()
方法是一个承诺,在尝试使用this.artworkList
之前,您必须等待此方法,或者您可以将以下内容放入中。然后调用的部分
for (let artwork of this.artworkList) {
console.log(artwork.name);
}
当前,循环与对方法的调用一起异步运行,该方法返回一个承诺
,该方法试图循环通过一个空的this.artworkList
,从而导致问题。您的循环同步运行,而您异步获取它迭代的数据。
您必须将实际循环移动到然后
-块中,这样您就不会访问可能未定义的值
constructor(private artworkService: ArtworkService) {
}
ngOnInit() {
this.refresh();
}
refresh() {
this.artworkService.retrieveAll().then((artworkList) => {
this.artworkList = artworkList;
for (let artwork of this.artworkList) {
console.log(artwork.name);
}
});
}
您的循环是同步运行的,而您是异步获取它迭代的数据的。
您必须将实际循环移动到然后
-块中,这样您就不会访问可能未定义的值
constructor(private artworkService: ArtworkService) {
}
ngOnInit() {
this.refresh();
}
refresh() {
this.artworkService.retrieveAll().then((artworkList) => {
this.artworkList = artworkList;
for (let artwork of this.artworkList) {
console.log(artwork.name);
}
});
}
您可以通过异步调用作为承诺来检索数据,但是可以同步地迭代数组。您应该将for循环移动到调用中,然后
调用。您可以通过异步调用作为promise来检索数据,但可以同步迭代数组。您应该将for循环移动到调用中,然后
调用。