【发布时间】:2021-09-19 22:51:39
【问题描述】:
我正在尝试在我的网络应用程序上显示从 Firebase 数据库检索到的文档(对象)。我正在使用的对象具有以下接口/类型
export interface seasonResultsObject {
sport: string;
country: string;
league: string;
season: string;
results: result[];
}
我只想显示结果数组——它本身就是一个对象数组。我不想显示所有其他键值对。鉴于此,我构建了以下模板:
<div class="container">
<app-workspace-nav></app-workspace-nav>
<div *ngFor="let key of seasonDocument | keyvalue">
<div *ngIf="key.key === 'results'">
<!-- {{key.value}} -->
<div *ngFor="let result of key.value">
{{ result }}
</div>
</div>
</div>
</div>
逻辑如下:遍历文档中的所有键值对,如果找到结果键,则(仅)显示该键值对的值-该行现在已被注释掉,但它可以完美运行并且在页面上显示对象列表,如下所示:
[object Object],[object Object],[object Object],[object Object],[object Object]
问题是这段代码:
<div *ngFor="let result of key.value">
{{ result }}
</div>
逻辑上应该通过key.value 进行交互,这是result 类型的对象的数组/列表,但我收到以下错误:
error TS2322: Type 'string | result[]' is not assignable to type 'NgIterable<result> | null | undefined'.
6 <div *ngFor="let result of key.value">
作为参考,结果对象如下所示:
export interface result {
[key: string]: any;
Div: string;
Date: number;
}
我很想知道我做错了什么以及如何解决它。提前谢谢你。
【问题讨论】:
-
如果数据是你返回的模型中的数组,为什么你不能迭代呢?
-
你正在循环遍历
seasonResultsObject所以我猜它的一个results键没有指向数组 -
@DarrenStreet 好点——这就是我现在所做的
-
@AmadouBeye *ngIf 语句解决了这个问题...
-
@RubenFerreira *ngIf 只检查键名是否为
results...
标签: javascript angular key-value ngfor