Uma expressão track especificada no loop @for avaliou para chaves duplicadas para uma determinada coleção, ex.:
@Component({ template: `@for (item of items; track item.value) {{{item.value}}}`,})class TestComponent { items = [{key: 1, value: 'a'}, {key: 2, value: 'b'}, {key: 3, value: 'a'}];}
No exemplo fornecido, a expressão de tracking item.key encontrará duas chaves duplicadas a (nos índices 0 e 2).
Chaves duplicadas são problemáticas do ponto de vista de correção: como o loop @for não pode identificar uniquamente os itens, ele pode escolher nós DOM correspondentes a outro item (com a mesma chave) ao realizar movimentações de DOM ou destruir.
Também há uma penalidade de performance associada com chaves duplicadas - internamente o Angular deve usar estruturas de dados mais sofisticadas e lentas ao repetir sobre coleções com chaves duplicadas.
Corrigindo o erro
Altere a expressão de tracking de forma que ela identifique uniquamente um item em uma coleção. No exemplo discutido, a expressão track correta usaria a propriedade única key (item.key):
@Component({ template: `@for (item of items; track item.key) {{{item.value}}}`,})class TestComponent { items = [{key: 1, value: 'a'}, {key: 2, value: 'b'}, {key: 3, value: 'a'}];}