angular - 在我的角度项目中,为什么我的迭代(ngFor)组件的索引变量变成了字符串而不是数字
问题描述
我创建了组件中所有数据的迭代,因此每个元素都使用 *ngFor 成为一张卡片。
<ng-container *ngFor="let card of cardsInfo; index as i">
<app-card
id="{{ card.id }}"
index="{{ i }}"
[url]="url"
[cardLocation]="isDisplayed(card.id)"
>
如您所见,索引是 CardComponent 的输入。
最初,我@Input() index: number;
在 CardComponent 中,但是当我尝试访问该数字并将其与另一个数字一起使用时(例如:card.index === this.displayedCardIndex - 1
,该应用程序将无法运行。我登录card.index === 0
控制台并得到错误,即使索引为 0 的元素应该一直是真的,但它是假的。我登录card.index, this.displayedCardIndex
到控制台并得到0 0
,但第二个 0 是紫色的,告诉我这是一个不同的类型,一个数字类型,第一个是白色的,类型为字符串。为了确认这一点,我在控制台登录typeof card.index
并它向我证实这是一个字符串。
为什么要把它变成一个字符串?我认为这是因为它来自 HTML 模板。有没有办法让 Angular 将它作为类型号传递,这样我就不必每次使用它时都解析它或在 CardComponent 中做类似的事情?对我来说,这感觉就像是一种黑客行为,并且宁愿不这样做。
解决方案
当您使用车把时,该值被视为要显示的内容。要绑定实际值,请尝试
[index]="i"
推荐阅读
- php - 在服务器上安装 SSL 证书时,是否需要更改 PHP 表单提交和 MySQL intersterer 代码?
- netlogo - MOVE-TO 期望输入是代理,但得到 NOBODY
- java - 使用 PDFBox 从签名的 PDF 中读取原始文档
- .net - 用于多个分布式 .net 服务的单一集中配置设置存储
- sql - 如果表匹配,则将值附加到多值字段中
- node.js - Firebase 函数 GET http://localhost:5001/runtime.js net::ERR_ABORTED 404(未找到)
- azure - 在 Azure 将我锁定在虚拟机之外并强制我重置密码后,发布到 Azure 失败
- zabbix - 衡量 Zabbix 带宽消耗的最佳方法是什么?
- javascript - FormData 附加文件 Angular
- javascript - Parse Server Parse.User.current() 返回所有用户数据