When using *ngFor without trackBy, Angular recreates all DOM elements when the array changes, even if most items remain the same. Open your console to see components being recreated.
<app-card-item
*ngFor="let card of cards"
[card]="card"
appLifecycleLogger
/>
Component Instance ID: 8ngxc
Component Instance ID: cywt0p
Component Instance ID: ekvay