взгляд очевидную (но не для меня лол) вещь.
Если в сервисе в BehaviourSubject закинуть объект, написать геттер, который отдаёт его asObservable, а потом в компоненте подисаться на этот сабжект - то ты получаешь ссылку на тот же самый объект. И если попытаться его мутировать тупым myObj.field = something, то изменяется и тот объект, который лежит в самом сервисе.
Подскажите, как вы решаете это? Ну помимо очевидного создания копии перед мутированием.
а нафига его мутировать? и конечно ссылка на тот же объект, сабжект внутри ничего не меняет
Все observable и subject надо readonly объявлять
Нет. И все инжектируемые сущности тоже private readonly
Ну, в целом - да, только это не решает пробелму мутации данных
Тип данных тоже readonly )
Ну это сложновато
Можно freeze() объект, чтобы его нельзя было мутировать, но это прям дичь какая-то Надо возвращать из стора глубокую копию объекта, чтобы пользоваться нормально structuredClone() без всяких json parse
Ngrx так и делает
Или ngrx-data. Но кто-то из них точно)
Обсуждают сегодня