Що таке signal в Angular?
signal в Angular - це новий реактивний примітив (починаючи з Angular 16), який зберігає значення і дозволяє автоматично відстежувати, хто це значення читає, і кого потрібно оновити при його зміні. Це альтернатива потокам (RxJS) у простих сценаріях і заміна @Input(), @Output(), BehaviorSubject та частини zone-based механіки.
Як виглядає
ts
import { signal } from '@angular/core';
const counter = signal(0);
console.log(counter()); // читання значення
counter.set(1); // встановити нове значення
counter.update(v => v + 1); // змінити на основі попередньогоЯк працює по суті
signal()створює сховище значення- читання - це виклик
counter() - запис -
set()абоupdate() - Angular стежить, які вирази читають сигнал, і при зміні запускає оновлення пов'язаних шаблонів, ефектів або обчислюваних сигналів
Пов'язані сутності
computed()- обчислюване значення на основі інших сигналівeffect()- реакція на зміну сигналів (наприклад логування або виклик методу)
Де зазвичай застосовують
- стан компонента без RxJS
- зберігання UI-станів (фільтри, прапорці, лічильники)
- проста реактивність у шаблоні без підписок і
asyncpipe
Головна відмінність від RxJS
| Signals | RxJS |
|---|---|
| Pull-модель | Push-модель |
| Стан - одне значення | Потоки подій |
| Мінімум підписок | Підписки обов'язкові |
| Просто для локального стану | Складні асинхронні сценарії, обробка подій |
Підсумок: signal - це новий механізм реактивного стану в Angular, який спрощує і робить декларативною реактивність усередині компонентів. RxJS при цьому залишається для складних потоків і асинхронної логіки.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.