Architecture of Angular
Angular Architecture

Architecture of Angular

ARCHITECTURE OVERVIEW

Angular is a platform and framework for building client applications in HTML and TypeScript. Angular is itself written in TypeScript. It implements core and optional functionality as a set of TypeScript libraries that you import into your apps.

The basic building blocks of an Angular application are NgModules, which provide a compilation context for components. NgModules collect related code into functional sets; an Angular app is defined by a set of NgModules.

  • Components define views, which are sets of screen elements that Angular can choose among and modify according to your program logic and data. Every app has at least a root component.
  • Components use services, which provide specific functionality not directly related to views. Service providers can be injected into components as dependencies, making your code modular, reusable, and efficient.

Both components and services are simply classes, with decorators that mark their type and provide metadata that tells Angular how to use them.

  • The metadata for a component class associates it with a template that defines a view. A template combines ordinary HTML with Angular directives and binding markup that allow Angular to modify the HTML before rendering it for display.
  • The metadata for a service class provides the information Angular needs to make it available to components through Dependency Injection (DI).

The architecture diagram identifies the eight main building blocks of an Angular application:

Modules

Angular defines the NgModule, which differs from and complements the JavaScript (ES2015) module. An NgModule declares a compilation context for a set of components that is dedicated to an application domain, a workflow, or a closely related set of capabilities. An NgModule can associate its components with related code, such as services, to form functional units.

Every Angular app has a root module, conventionally named AppModule, which provides the bootstrap mechanism that launches the application. An app typically contains many functional modules.

Components

Every Angular application has at least one component, the root component that connects a component hierarchy with the page DOM. Each component defines a class that contains application data and logic, and is associated with an HTML template that defines a view to be displayed in a target environment.

The @Component decorator identifies the class immediately below it as a component, and provides the template and related component-specific metadata.

Templates, directives, and data binding

A template combines HTML with Angular markup that can modify the HTML elements before they are displayed. Template directivesprovide program logic, and binding markup connects your application data and the document object model (DOM).

  • Event binding lets your app respond to user input in the target environment by updating your application data.
  • Property binding lets you interpolate values that are computed from your application data into the HTML.

Before a view is displayed, Angular evaluates the directives and resolves the binding syntax in the template to modify the HTML elements and the DOM, according to your program data and logic. Angular supports two-way data binding, meaning that changes in the DOM, such as user choices, can also be reflected back into your program data.

Your templates can also use pipes to improve the user experience by transforming values for display. Use pipes to display, for example, dates and currency values in a way appropriate to the user's locale. Angular provides predefined pipes for common transformations, and you can also define your own.

Services and dependency injection

For data or logic that is not associated with a specific view, and that you want to share across components, you create a service class. A service class definition is immediately preceded by the @Injectable decorator. The decorator provides the metadata that allows your service to be injected into client components as a dependency.

Dependency injection (or DI) lets you keep your component classes lean and efficient. They don't fetch data from the server, validate user input, or log directly to the console; they delegate such tasks to services.




To view or add a comment, sign in

More articles by Ajinkya Rananavare

  • Angular 7 Features And Updates

    Angular 7 Features And Updates is today’s leading topic. Yes, it is true that Angular 7 is here and the wait is finally…

    1 Comment
  • Components In Angular5

    Component: Angular components are the basic building blocks of your app. Each component defines: Any necessary imports…

  • Interpolation and property binding

    Two of the most fundamental parts of any application are Data and UI. It is crucial to find an efficient way to wire…

    2 Comments
  • Generic in Typescript

    Generics: Even for developers with experience, generics are sometimes confusing. Let’s finally make it simple and clear.

Others also viewed

Explore content categories