Components define views, which are sets of screen elements that angular can choose among and modify according to your program logic and data. Component are simply classes, with decorator 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 bind markup that allow angular to modify the HTML before rendering it for display. So in simple terms a component in Angular is composed of these 3 things Template - Defines the user interface. Contains the HTML, directives and bindings. Class - Contains the code required for template. Just like a class in any object oriented programming language like C# or Java, a class in angular can contain methods and properties. Properties contain the data that we want to display in the view template and methods contain the logic for the view. We use TypeScript to create the class