This 3-day instructor led course is designed to help established Angular developers gain mastery over one of the biggest challenges in all user interface applications: State Management
After gaining a strong foundation on "thinking in Angular", and familiarity with the Angular abstractions, the next challenge is developing a sophisticated understanding of how state flows through an application, the categories of state, and challenges on keeping state "fresh" in your applications.
This course is for those that are very familiar with Angular, and the basics of state management. We will assume you have experience with:
Our Angular applications are created to allow the users to accomplish things we want them to accomplish. Usually they will need "supporting data" to confidently make choices. This data often comes from "Shared Store" APIs, containing reference data. This data usually works as predicates in the user making decisions, but should always be treated as "suspect". State retrieved from an API, for example, could be out of date.
We will learn patterns and strategies for:
Our primary source of shared state reference data is from HTTP API calls. We will learn patterns you can apply with:
HttpClient
@ngrx/store
resource
, and httpResource
.Some state from the server will be "owned" by the user and will be transferred to and from the server during the use of the application.
Concurrency and locking is still an issue with this data, so we will learn patterns and practices to safely work with user server state, building upon the Shared State practices above.
We will explore nuances with Authentication and Authorization, as well as server side-effect message design and validation, while emphasizing non-ui-blocking techniques.
Since user server state is almost always related in some way to Shared State, we will learn how to derive projections of the Shared state and User State to adequately inform the users of the decisions they've made and can make.
User Server State is almost always a reflection of the operations taken by the user over the life of the application and provides the mechanism through which we decide which affordances will be surfaced to the user during the use of the application. (For example, you can't schedule a second appointment during a timeframe you've already scheduled, you cannot initiate a return for an item that has already shipped - or whatever your business rules are).
Topics here will include:
Our primary source of User Server State will be:
@NGRX/store
and store features@NGRX/signals
and interacting with global redux store state.We will explore patterns for User Application State, which is state that is about the user interacting with the application during a session.
Topics include:
Our primary source for User Application State will be:
@NGRX/signals
)WebStorage
, IndexDb
)Sometimes called "non-functional requirements", we will learn techniques for those things that happen "behind the scenes" in our application, including logging, observability, and "replayability" of user sessions.
In this section we will heavily address reliability issues in distributed applications, including: