확장 진단

호출되지 않은 추적 함수

이 진단은 @for 블록에서 추적 함수를 호출하지 않은 경우를 감지합니다.

import {Component} from '@angular/core';

@Component({
  template: `@for (item of items; track trackByName) {}`,
})
class Items {
  protected trackByName(item) {
    return item.name;
  }
}

무엇이 문제인가요?

@for 블록은 이터러블의 항목 순서가 바뀌거나 항목이 추가 또는 삭제될 때 DOM을 올바르게 업데이트하기 위해 각 항목을 고유하게 식별해야 합니다. 함수를 호출하지 않으면 조정 알고리즘이 반환값 대신 함수 참조를 사용하여 항목을 비교합니다.

어떻게 해결하나요?

@for 블록에서 추적 함수를 사용할 때는 함수를 호출하여 반복문이 각 항목을 고유하게 식별할 수 있도록 하세요.

import {Component} from '@angular/core';

@Component({
  template: `@for (item of items; track trackByName(item)) {}`,
})
class Items {
  protected trackByName(item) {
    return item.name;
  }
}

필수 설정

확장 진단이 발생하려면 strictTemplates를 활성화해야 합니다. uninvokedTrackFunction에는 strictTemplates 외의 추가 요구 사항이 없습니다.

이 상황을 피할 수 없다면 어떻게 하나요?

프로젝트의 tsconfig.json 파일을 수정하여 이 진단을 비활성화할 수 있습니다.

{
  "angularCompilerOptions": {
    "extendedDiagnostics": {
      "checks": {
        "uninvokedTrackFunction": "suppress"
      }
    }
  }
}

자세한 내용은 확장 진단 설정을 참고하세요.