Объясните change detection. Чем OnPush отличается от Default?
Change detection обходит дерево компонентов после событий, таймеров или HTTP-ответов и перерисовывает изменившиеся привязки. Default проверяет каждый компонент на каждом цикле. OnPush проверяет компонент только когда изменилась ссылка во входном свойстве, внутри произошло событие или async pipe выдал значение — поэтому OnPush требует иммутабельных данных: изменение объекта на месте не меняет ссылку, и представление не обновится.