Як можна керувати станом за допомогою сервісів?
Керувати станом через сервіси - це простий і потужний спосіб тримати дані під контролем без складних бібліотек.
Що робить сервіс "керуючим станом":
Він:
- зберігає змінні (наприклад,
user,cart,isLoading) - надає методи для зміни цих змінних
- віддає значення компонентам - напряму або через потік (
BehaviorSubject)
Приклад:
ts
@Injectable({ providedIn: 'root' })
export class CartService {
private cartItems = new BehaviorSubject<Product[]>([]);
cart$ = this.cartItems.asObservable();
add(item: Product) {
const current = this.cartItems.value;
this.cartItems.next([...current, item]);
}
clear() {
this.cartItems.next([]);
}
}Компонент просто підписується:
ts
this.cartService.cart$.subscribe(items => this.cart = items);Що в підсумку:
- Компоненти не зберігають логіку і дані в собі - вони просто відображають
- Усі зміни йдуть централізовано
- Стан живе, навіть якщо компонент знищено
- Підписники автоматично отримують оновлення
Висновок: Сервіс стає єдиним сховищем і диспетчером, де все прозоро, реактивно і під контролем. Для 90% завдань цього вже достатньо.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.