In this chapter, we have learned how to deal with data and application state in a way which is best for the maintainability of our application. We have switched our task service from synchronous operations on tasks stored within the service directly to using the Angular in-memory web API and the HTTP client.
We learned about how we can profit from concepts, such as reactive programming, observable data structures, and immutable objects, in order to make our application perform better, and most importantly, simple and easy to reason about.
We have also learned about the separation of user interface from application state and implemented the concept of container components into our application.
In the next chapter, we're going to organize our application on a larger scale. By introducing a new project layer, we can start organizing tasks within projects. We will create...