SignalState утилита
SignalState — это легкая утилита для маленького стейта. Это не SignalStore. А просто утилита, которая позволяет превратить все свойства объекта рекурсивно в сигналы и удобно их изменять.
readonly person = signalState<Person>({ id: 1, name: 'John Doe', address: { street: '123 Main St', city: 'Anytown', state: 'CA', } });
Теперь, обращаясь к любому свойству person (помещая его в переменную) мы получаем сигнал, который создается «на лету» (не предварительно все становится сигналами). Такой себе аналог computed
, можно сказать.
readonly address = this.person.address; //signal readonly street = this.person.address.street; //signal
Способы обновления
Вместо методов set
или update
, как у обычных сигналов, здесь у нас есть метод patchState
.
Первым параметром передаем сам объект (signalState) для обновления, а вторым — объект с обновленными полями либо метод, принимающий предыдущее значение.
setName() { patchState(this.person, { name: 'Jane Doe' }); } updateId() { patchState(this.person, p => ({ id: p.id + 1, })); } updateAddress() { patchState(this.person, p => ({ address: { ...p.address, street: '456 Elm St' } })); }