Angular 9 - trackBy 模板类型检查 angular

Angular 9 - trackBy template type checking angular

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

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

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

根据 documentation 你可以调用 trackBy

中的方法

所以你可以定义方法return id

trackByItems(index: number, skill: {id: number}): number {
   return skill.id;
}

I specified the type there like this since I don't know what type you are using

在 HTML 中直接调用它

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