使用 *ngFor 我能够渲染数据,但它会抛出此错误
错误 错误:NG0900:尝试比较“[object Object]”时出错。仅允许数组和可迭代对象
这是我的服务方法
async getEditions(): Promise> { return this.http.get (url+"/candidates/editions", httpOptions).pipe( tap((getEditions: Cigales) => this.log('getEditions' + getEditions)), catchError(this.handleError ('getEditions')) ); }
这是我的组件方法
editions: Cigale[] = []; async getEditions(): Promise{ await this.CigalesService.getEditions().then(res=> { res.subscribe(data => { this.editions = []; this.editions = data.content; }) }) }
这是我的 Cigales 界面
export interface Cigales {
content: Array,
pageable: pageable,
last: string;
totalPages: string;
totalElements: string;
size: string;
number: string;
sort: sort;
first: string;
numberOfElements: string;
empty: string;
}
export interface Cigale {
id?: string;
eventName: string;
eventStartDate: string;
eventEndDate: string;
}
type sort = {
empty: boolean,
sorted: boolean,
unsorted: boolean
}
type pageable = {
sort: sort,
offset: string;
pageNumber: string;
pageSize: string;
paged: string;
unpaged: string;
}
这是我的 component.html
{{item.eventName}} {{item.eventStartDate}} {{item.eventEndDate}}
Console.log(this.editions) 和我得到两个对象的数组
控制台结果
编辑:我尝试过 Array.isArray(this.editions) 并且它返回 true
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,您面临的错误与您尝试使用对象而不是数组作为 *ngFor 指令的数据源有关。
其次,尝试将数据分配给 this.editions,例如:
此外,我建议您避免在 Angular 应用程序中使用 Promise,而是通过利用订阅使代码更具反应性。