angular - Angular 9 - trackBy 模板类型检查
问题描述
我有一个简单的 trackBy 语句,直到 ng9 才出现问题。
<div *ngFor="let s of skills; trackBy: s?.id">
<app-skill [skill]="s"></app-skill>
</div>
现在,通过模板类型检查,编译器会抱怨:“SkillsListComponent”类型上不存在属性“s”——这是真的——因为它被内联定义为表达式。当代码运行时,这个编译错误也不会停止......只是想拥有一个整洁的代码库。有人知道如何以 ng9 友好的方式写这个吗?
解决方案
根据文档,您可以在trackBy
所以你可以定义将返回 id 的方法
trackByItems(index: number, skill: {id: number}): number {
return skill.id;
}
我在那里指定了这样的类型,因为我不知道您使用的是什么类型
在 HTML 中调用它
<div *ngFor="let s of skills; trackBy: trackByItems">
<app-skill [skill]="s"></app-skill>
</div>
推荐阅读
- linked-list - 为什么链表存储在堆中而不是堆栈中?
- javascript - 为什么 element.setAttribute('checked', true) 不起作用?
- azerothcore - AzerothCore:更改 authserver 的端口
- docker - 如何在 jboss 的standalone.xml 中的属性名称中使用环境变量?
- python - 带有重音字母的反斜杠转义字符串到 ascii
- excel - 与给定数字最接近的数字,但该数字必须在选定的变量增量内作为第二个参数
- java - 在 IntelliJ 中创建 MimeMessage 工作,卡在 .jar 中
- dll - 使用 gfortran 从 DLL 导出 COMMON 块
- vue.js - 如何在 ChartJS 中的数据上加上符号 (%)?
- php - php中有没有办法计算嵌套结构级别?