Angular · Middle · Pytanie 2 z 75
Dlaczego potomek OnPush nie aktualizuje się po wywołaniu addItem() w rodzicu?
// parent
items = [{ id: 1 }];
addItem() { this.items.push({ id: 2 }); }
// template: <app-list [items]="items" />- ✓Poprawna odpowiedź: Tablica została zmutowana, referencja wejścia jest ta sama, więc potomek OnPush nie jest oznaczany do sprawdzenia
- 2Komponenty OnPush nie mogą otrzymywać tablic jako wejść
- 3
pushjest zabroniony w komponentach Angular
Wyjaśnienie
OnPush porównuje wejścia według referencji. Utwórz nową tablicę (this.items = [...this.items, item]) albo trzymaj listę w sygnale i aktualizuj ją niemutowalnie.