我有一个简单的trackBy语句,直到ng9才出现。
<div *ngFor="let s of skills; trackBy: s?.id">
<app-skill [skill]="s"></app-skill>
</div>
现在,通过模板类型检查,编译器抱怨:属性"s"在类型"SkillsListComponent"上不存在 - 这是真的 - 因为它被内联定义为表达式。这个编译错误也没有显示障碍,因为代码运行......只是想要一个整洁的代码库。有谁知道如何以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>