According to Angular.io website "Angular is a platform and framework for building client applications in HTML and TypeScript". It uses typescript as its programming language, which is a super set of JavaScript. Typescript compiles to native JavaScript.

The fundamental building blocks of an Angular based application are NgModules, NgModules are collection of related code. An app always has at least a root module that enables bootstrapping, and typically has many more feature modules.






Angular apps are developed based on service based architecture, which means that lot of common tasks are created as services and are injected into the components. Components define views, and its related glue code logic.

Components use services, which provide specific functionality not directly related to views.
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).


Terminoogies used in Angular2+(2-7)

Components

Every Angular application has at least one component, the root component that connects a component hierarchy with the page document object model (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.

Every component contains following


  • HTML Template
  • CSS File
  • Component.ts File

Services

For data or logic that isn't 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.