如何在严格模式下使用 Angular 14 trackBy 函数:true?

问题描述 投票:0回答:3
angular typescript
3个回答
8
投票

Angular 中的严格模式可以实现以下功能

  • 在 TypeScript 中启用严格模式
  • 严格的角度编译器
    strictTemplates
    strictInjectionParameters
    strictInputAccessModifiers
  • 减少捆绑包大小预算

因为

strictTemplates
模板上的类型会严格检查其类型,就像在打字稿中一样。

现在在这种情况下,

trackBy
我们正在通过
TrackByFunction
。当前编写的
trackByFn
不遵循类型
TrackByFunction

interface TrackByFunction<T> {
  <U extends T>(index: number, item: T & U): any
}

因此

trackByFn
函数应遵循
TrackByFunction
接口签名。

trackByFn(index: number, item: { id: any }) {
   return item.id;
}

1
投票

将功能更改为:

  trackByFn(index: any, item: { id: any }) {
    return item ? item.id : undefined;
  }

对我有用!


0
投票

如果您不想使用 Type

any
,您的第二个参数需要匹配
ngFor
的可迭代元素的 Type。

迭代 FormGroup 时的一些示例:

<div *ngFor=let formGroup of formArray.controls; trackBy: trackById>
    <!-- enter code here -->
</div>
public formArray: FormArray;

public trackById(_index: number, item: FormGroup | AbstractControl) {
    return item.value.id;
}

角度文档

© www.soinside.com 2019 - 2024. All rights reserved.