Up to now, we have learned how to build applications that perform simple tasks and whose content can be navigated by loading a few components on the HTML page. However, the main purpose of single page application frameworks, such as Angular, is the implementation of complex business applications that exchange non-trivial quantities of data with a remote server. In such complex applications, acceptable user interface and performance can only be ensured with complex navigation patterns, as well as with efficient data exchange techniques.
This chapter explains how to enable components to perform complex tasks, such as communicating with the server, with the help of service classes automatically injected in their constructors. It also explains how to mount and test a complete application with complex navigation patterns that optimize both performance and application...