Lists
*ngFor="let s of students" repeats a row. trackBy: byId so Angular reuses DOM when the array updates. Without trackBy, a filter can steal input focus.
Board: two students. Delete the first. With trackBy id, the second row keeps what you typed. With index keys, it glitches. Same lesson as React keys.
Trap: *ngFor on a Map. Convert to an array. Another trap: mutating the array in place under OnPush and wondering why nothing redraws — assign a new array.
students[]
│ *ngFor + trackBy id
▼
row per studentExam tip
*ngFor + trackBy. Delete-first demo.