Perhaps, I'm looking to migrate from NgRx "old" states and stores to the new SignalState and Store for some applications. It seems I still need to have a change of mindset, because it seems there's no longer a need to have actions, effects, reducers and selectors set up? Are there equivalents or should I "forget" the old way when doing the new way with signals. Also, your enthusiasm is infectious.
@@JohanVrolix Thank you, it's awesome to hear that 😊There are no actions and reducers as separate concepts. the role of actions is taken by the custom behavior methods, the role of reducers is taken by patchState, and the role of effects can be implemented with a signal effect, and rxMethod for RxJs integration if needed; I think the new way of doing things is much easier, I much prefer it 😊
I really liked Signal Store. For a final understanding, it would be interesting to show how Signal Store can replace Ngrx Store with an example. Especially, how we can implement an analogue of effects from Ngrx Store. Thanks for your videos!
I see what you mean, added to the list of ideas: NgRx Store vs NgRx Signal Store. 👍 The way to do effects in signal store is just by using the effect() signal primitive, so there is nothing specific of signal store, just the generic signals functionality from Angular core. 👍
Interesting actually. So this is how I am planning to do my state management. This is how I set up Using pure signals, ngrx/signals signal state and RxMethod for side effects and keeping my components pure and accessing state from a state file and services are stateless. I would love to have your feedback on this pattern, I believe this will scale to bigger peojects easily but it would be great if you hav any opinion on it
Very informative video! I really like the approach of ngrx signal store and signalState and I really like to use the ngrx signalState to our project app but I'm just a bit hesiitant because its being managed by 3rd party and they might decide one day to stop providing support/update for the library.
Hi Michael, I understand the concern 👍, but please don't worry, this is not just any third-party. this is the most widely adopted state management solution in Angular, NgRx. Their members have close ties to the Angular team. It's not going anywhere and it's very well maintained. 😊
This is awesome. Thanks for doing this video. So could SignalState get used in a shared service class? I'm wondering if this would be an easier entry point versus setting up a store, and actions, and all of that other stuff.
Hello Cecil, thank you, I'm glad you enjoyed it 😊 Yes, correct you don't need a store to use NgRx Signal State, you can use it standalone in a shared service or component, or anywhere else in the code really, without having to create a store with actions and all the other boilerplate surrounding the store pattern. 👍
are there still actions / reducers / effects with ngrx signals? patching the state with "patchState" looks more imperative to me and i like the fact, that i am able to trigger an effect and a reducer with the same action.
that's a great point, I think I will make a separate video about it. actually reducers have been replaced with patchState calls, that is usually the main responsibility of reducers is to patch the state, right? There is no notion of action, we just call the behavior method on the store. Effects can be implemented via a signal effect, and selectors can be implemented via computed signals, both at the level of the store, at the level of the component, or they can be defined in an external file and reused among components. 👍
Would have been nice to know which version you are using here and which version this implementation supports. A lot more angular devs are in v16 and cannot move to 18 yet...
I just came across a situation where I need to update a nested Status object. The Status object lives in another object, and that object is declared as a signal. When the status is set to a specific value, the UI should disable/remove actions. Two things crossed my mind: What's the best way to update the status value: mutate the StatusId, or spread it into a new object where Status is set to a new object? How am I going to notify all the locations where the main object is used (main page component and two child components)? Then i remembered to check your videos, and here it is! =D but... Is using signalState the default "right" way to do it now? Does the Angular team have something to tackle this in the current/future signal API? I don't want to refactor all the code if there will be a new "official" way to do it.
It's a very good question. The signals API either allows us to just declare a state object and update every time a property changes. This does not provide fine-grained reactivity of single object properties, but it's probably OK for the vast majority of cases it should't make a difference, If it does make a different, then you can always split the object properties into different signals. NgRx Signal State is the best solution I found so far for fine-grained reactivity, and the closest to an official solution. 👍
Love signalStates, the only downside is that we lose redux tools with this implementation. Do you know if there is any other alternative to not lose the feature to check the actual state of the application from the browser?
use signal state if you just want deep signals, without the boilerplate of a centralized store solution. Use signal store if you want a centralized store solution that is signal-based. 👍
Great question 👍 The main difference is that the API of NgRx Store is 100% RxJs-based, almost everything is an Observable. With NgRx Signal Store, RxJs is not part of the core API of the store solution. The docs show how to use it using async/await, much simpler. But you still have integration with RxJs via rxMethod, if necessary.
Nice explanation. Thanks a lot. I have a question about the "store" concept. I never find good explanation do I need stay all data in a single state object? Or I can or should to use different stores for example for the component data, service data, UI state data? It will be very kindly to master some video about the strategy how to work with "state" or "states" in an app. Thanks in advance. PS: +like, +Subscribe
it's the first time I cover NgRx Signal State on the channel. The other videos were about NgRx Signal Store. But I think I know what you mean, it's another video about deep signals, just in a different way. So what would you like to see next on the channel?
Let me know if you are planning on adopting NgRx Signal state on your application 😉
Perhaps, I'm looking to migrate from NgRx "old" states and stores to the new SignalState and Store for some applications. It seems I still need to have a change of mindset, because it seems there's no longer a need to have actions, effects, reducers and selectors set up? Are there equivalents or should I "forget" the old way when doing the new way with signals. Also, your enthusiasm is infectious.
@@JohanVrolix Thank you, it's awesome to hear that 😊There are no actions and reducers as separate concepts. the role of actions is taken by the custom behavior methods, the role of reducers is taken by patchState, and the role of effects can be implemented with a signal effect, and rxMethod for RxJs integration if needed; I think the new way of doing things is much easier, I much prefer it 😊
I will adopt NgRx Signals in my future applications with Angular. Thank you for this video !
@@notirondead You're welcome, please enjoy the videos and stay tuned for more Angular signals content. 😊
Sure!
I really liked Signal Store. For a final understanding, it would be interesting to show how Signal Store can replace Ngrx Store with an example. Especially, how we can implement an analogue of effects from Ngrx Store. Thanks for your videos!
I see what you mean, added to the list of ideas: NgRx Store vs NgRx Signal Store. 👍 The way to do effects in signal store is just by using the effect() signal primitive, so there is nothing specific of signal store, just the generic signals functionality from Angular core. 👍
Your knowledge share are always simple and precised. Thank you Vasco!!!!
You're welcome, I'm happy to hear that I try to demystify things and explain them in an approachable way. 😉
Thank you for this Vasco. I started using NGRX signal store with my modules instead of NGRX store and it has simplified my code.
You're welcome, enjoy the new videos 😊 It's so much simpler than NgRx store, isn't it? I really like it too. 😊
@@AngularUniversityIt truly is.
Great content. I love to see in what direction this channel is heading. Cheers Vasco
Thank you, it's awesome to hear that, more videos underway 😉
I also think NgRx Signals has potential. I enjoy managing state with it.
Yes, it' has a ton of potential, I think it will be widely adopted in the signals ecosystem, I suspect way more than NgRx Store 😊
Thanks!
Thank you Dylan, please enjoy the channel 😊
Interesting actually. So this is how I am planning to do my state management. This is how I set up Using pure signals, ngrx/signals signal state and RxMethod for side effects and keeping my components pure and accessing state from a state file and services are stateless. I would love to have your feedback on this pattern, I believe this will scale to bigger peojects easily but it would be great if you hav any opinion on it
Very informative video! I really like the approach of ngrx signal store and signalState and I really like to use the ngrx signalState to our project app but I'm just a bit hesiitant because its being managed by 3rd party and they might decide one day to stop providing support/update for the library.
Hi Michael, I understand the concern 👍, but please don't worry, this is not just any third-party. this is the most widely adopted state management solution in Angular, NgRx. Their members have close ties to the Angular team. It's not going anywhere and it's very well maintained. 😊
What use cases does this signalState have?
I don't understand the use cases it has.
Great Video!
Good stuff Vasco. I've been following you for a long time!
Thank you, it's awesome to hear that 😊 Please enjoy the videos.😉
WOW! thanks a lot
you're welcome, enjoy the video 😉
This is awesome. Thanks for doing this video.
So could SignalState get used in a shared service class? I'm wondering if this would be an easier entry point versus setting up a store, and actions, and all of that other stuff.
Hello Cecil, thank you, I'm glad you enjoyed it 😊 Yes, correct you don't need a store to use NgRx Signal State, you can use it standalone in a shared service or component, or anywhere else in the code really, without having to create a store with actions and all the other boilerplate surrounding the store pattern. 👍
@@AngularUniversity For no so complex apps that need central state management, SignalState + a few Rx operators seems like a good fit.
are there still actions / reducers / effects with ngrx signals? patching the state with "patchState" looks more imperative to me and i like the fact, that i am able to trigger an effect and a reducer with the same action.
that's a great point, I think I will make a separate video about it. actually reducers have been replaced with patchState calls, that is usually the main responsibility of reducers is to patch the state, right? There is no notion of action, we just call the behavior method on the store. Effects can be implemented via a signal effect, and selectors can be implemented via computed signals, both at the level of the store, at the level of the component, or they can be defined in an external file and reused among components. 👍
i have had to update my angular cli 3 billion of time in the last 2 years to get the most recent angular's version
Only twice a year for my courses, but recently way more to cover the release candidates. 😉
Would have been nice to know which version you are using here and which version this implementation supports. A lot more angular devs are in v16 and cannot move to 18 yet...
I just came across a situation where I need to update a nested Status object. The Status object lives in another object, and that object is declared as a signal. When the status is set to a specific value, the UI should disable/remove actions. Two things crossed my mind:
What's the best way to update the status value: mutate the StatusId, or spread it into a new object where Status is set to a new object?
How am I going to notify all the locations where the main object is used (main page component and two child components)?
Then i remembered to check your videos, and here it is! =D but... Is using signalState the default "right" way to do it now? Does the Angular team have something to tackle this in the current/future signal API? I don't want to refactor all the code if there will be a new "official" way to do it.
It's a very good question. The signals API either allows us to just declare a state object and update every time a property changes. This does not provide fine-grained reactivity of single object properties, but it's probably OK for the vast majority of cases it should't make a difference, If it does make a different, then you can always split the object properties into different signals. NgRx Signal State is the best solution I found so far for fine-grained reactivity, and the closest to an official solution. 👍
Love signalStates, the only downside is that we lose redux tools with this implementation. Do you know if there is any other alternative to not lose the feature to check the actual state of the application from the browser?
That's a great point, right now there aren't any but I'm sure there will be.
SignalState vs SignalStore
when to use when
use signal state if you just want deep signals, without the boilerplate of a centralized store solution. Use signal store if you want a centralized store solution that is signal-based. 👍
Ran into a weird recursion issue with rxmethod. Not sure what's causing it though
That's weird, what was the scenario?
What if you take a complex object as an input signal? I guess we're still better of with a custom equal method.
That is exactly the case that NgRx Signal State was designed to handle 👍
Thanks , can you please share code on github ?
What is the difference between Signal State and Signal Store in terms of RxJs
Great question 👍 The main difference is that the API of NgRx Store is 100% RxJs-based, almost everything is an Observable. With NgRx Signal Store, RxJs is not part of the core API of the store solution. The docs show how to use it using async/await, much simpler. But you still have integration with RxJs via rxMethod, if necessary.
Thank you ! @@AngularUniversity
COOL
It is, isn't it? 😉
Nice explanation. Thanks a lot. I have a question about the "store" concept. I never find good explanation do I need stay all data in a single state object? Or I can or should to use different stores for example for the component data, service data, UI state data? It will be very kindly to master some video about the strategy how to work with "state" or "states" in an app. Thanks in advance.
PS: +like, +Subscribe
repeating video...not new
it's the first time I cover NgRx Signal State on the channel. The other videos were about NgRx Signal Store. But I think I know what you mean, it's another video about deep signals, just in a different way. So what would you like to see next on the channel?