首页 > 解决方案 > Angular 9 - trackBy 模板类型检查

问题描述

我有一个简单的 trackBy 语句,直到 ng9 才出现问题。

<div *ngFor="let s of skills; trackBy: s?.id">
  <app-skill [skill]="s"></app-skill>
</div>

现在,通过模板类型检查,编译器会抱怨:“SkillsListComponent”类型上不存在属性“s”——这是真的——因为它被内联定义为表达式。当代码运行时,这个编译错误也不会停止......只是想拥有一个整洁的代码库。有人知道如何以 ng9 友好的方式写这个吗?

标签: angularangular9

解决方案


根据文档,您可以在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>

推荐阅读