The architecture of an Angular application has many parts that work together to deliver an Angular app to the browser. Here is a brief overview of the architecture involved and the building blocks of an Angular application. NgModules: Declares a compilation context for a set of components that is dedicated to an application domain, a workflow, or a related set of capabilities. Components: Defines a class that contains application data and logic and works with an HTML template that defines a view. Template: Combines HTML with Angular markup that can modify HTML elements before they're displayed. Directive: Attaches custom behavior to elements in the DOM. Two-way data binding: Coordinates the parts of a template with the parts of a component. Services: Typically, a class used to increase modularity and reusability with a narrow and well-defined purpose. Dependency injection: Provides components with needed services and gives access to a service class. Routing: Defines a navigation path among the different application states lets you view application hierarchies.