How to Create Angular Component

Introduction Creating components in Angular is a fundamental skill for any developer working with this powerful front-end framework. Angular components are the building blocks of Angular applications, encapsulating templates, styles, and logic into cohesive, reusable units. Understanding how to create Angular components not only streamlines development but also ensures maintainable and scalable co

Nov 17, 2025 - 11:38
Nov 17, 2025 - 11:38
 3

Introduction

Creating components in Angular is a fundamental skill for any developer working with this powerful front-end framework. Angular components are the building blocks of Angular applications, encapsulating templates, styles, and logic into cohesive, reusable units. Understanding how to create Angular components not only streamlines development but also ensures maintainable and scalable code.

This tutorial provides a comprehensive, step-by-step guide on how to create Angular components from scratch. Whether you are a beginner or an experienced developer looking to refine your skills, this guide covers essential concepts, best practices, and real-world examples to help you master Angular component creation.

Step-by-Step Guide

1. Setting Up Your Angular Environment

Before creating components, ensure you have a working Angular environment. Install Node.js and Angular CLI (Command Line Interface) for efficient project management.

To install Angular CLI globally, use the command:

npm install -g @angular/cli

Once installed, create a new Angular project by running:

ng new my-angular-app

Navigate into the project directory:

cd my-angular-app

Serve the application locally to verify the setup:

ng serve --open

2. Understanding Angular Components

An Angular component consists of three core parts:

  • Template: Defines the HTML view.
  • Class: Contains logic and data.
  • Styles: Defines component-specific CSS.

Each component is represented by a TypeScript class decorated with the @Component decorator.

3. Creating a Component Using Angular CLI

The easiest way to create a component is through Angular CLI. Run the following command to generate a component:

ng generate component component-name

For example, to create a 'user-profile' component:

ng generate component user-profile

This command generates:

  • user-profile.component.ts (TypeScript class)
  • user-profile.component.html (template)
  • user-profile.component.css (styles)
  • user-profile.component.spec.ts (unit tests)

4. Manual Component Creation

While CLI automates component creation, understanding manual creation is valuable. Follow these steps:

  1. Create a new TypeScript file, e.g., custom.component.ts.
  2. Import necessary Angular core elements:
  3. import { Component } from '@angular/core';

  4. Define the component with the @Component decorator:
  5. @Component({
    

    selector: 'app-custom',

    templateUrl: './custom.component.html',

    styleUrls: ['./custom.component.css']

    })

    export class CustomComponent {

    // Component logic here

    }

  6. Create the HTML template file custom.component.html and add your markup.
  7. Create the CSS file custom.component.css and add styles.
  8. Declare the component in your Angular Module (app.module.ts):
  9. import { CustomComponent } from './custom/custom.component';
    

    @NgModule({

    declarations: [

    CustomComponent,

    // other components

    ],

    // other module properties

    })

    export class AppModule { }

5. Using the Component in Templates

After creation, use the component selector as an HTML tag within other component templates to display it. For example:

<app-custom></app-custom>

This renders the CustomComponent wherever it is placed.

6. Passing Data to Components with @Input

To make components dynamic, use the @Input decorator to accept data from parent components.

Example:

import { Component, Input } from '@angular/core';

@Component({

selector: 'app-user',

template: '<p>User: {{ name }}</p>'

})

export class UserComponent {

@Input() name: string;

}

Usage in parent template:

<app-user [name]="parentName"></app-user>

7. Emitting Events with @Output

To communicate from child to parent, use @Output with EventEmitter.

import { Component, Output, EventEmitter } from '@angular/core';

@Component({

selector: 'app-clicker',

template: '<button (click)="notifyParent()">Click me</button>'

})

export class ClickerComponent {

@Output() clicked = new EventEmitter<void>();

notifyParent() {

this.clicked.emit();

}

}

Parent listens:

<app-clicker (clicked)="onChildClicked()"></app-clicker>

Best Practices

1. Use Angular CLI for Consistency

Always use Angular CLI to generate components. It ensures consistent file structure, naming conventions, and minimal setup errors.

2. Keep Components Small and Focused

Follow the Single Responsibility Principle by designing components to handle one specific task or feature. This improves readability and reusability.

3. Use OnPush Change Detection When Appropriate

For performance optimization, use ChangeDetectionStrategy.OnPush in components that rely on immutable data or inputs.

4. Encapsulate Styles

Leverage Angulars ViewEncapsulation to prevent styles from leaking outside the component. Default encapsulation is sufficient for most cases.

5. Use Strong Typing with TypeScript

TypeScripts static typing helps catch errors early. Always define types for inputs, outputs, and component properties.

6. Document Components

Add meaningful comments and use JSDoc annotations for public APIs to improve maintainability and onboarding.

Tools and Resources

1. Angular CLI

The official command-line interface for Angular projects. It simplifies creation, testing, and building processes.

2. Angular Documentation

Angular Official Component Guide provides comprehensive information and best practices.

3. Visual Studio Code

A widely used code editor with Angular extensions for syntax highlighting, snippets, and debugging.

4. Angular DevTools

A browser extension for Chrome and Firefox that helps inspect Angular component hierarchies and performance.

5. StackBlitz

An online IDE for Angular that allows quick prototyping and sharing of Angular components.

Real Examples

Example 1: Simple Greeting Component

This component accepts a name and displays a greeting.

import { Component, Input } from '@angular/core';

@Component({

selector: 'app-greeting',

template: '<h2>Hello, {{ name }}!</h2>',

styles: ['h2 { color: green; }']

})

export class GreetingComponent {

@Input() name: string = 'Guest';

}

Usage:

<app-greeting [name]="'Alice'"></app-greeting>

Example 2: Todo List Component

A component that displays a list of tasks and allows users to mark them as complete.

import { Component } from '@angular/core';

interface Todo {

id: number;

title: string;

completed: boolean;

}

@Component({

selector: 'app-todo-list',

template:

<ul>

<li *ngFor="let todo of todos">

<input type="checkbox" [(ngModel)]="todo.completed">

<span [class.completed]="todo.completed">{{ todo.title }}</span>

</li>

</ul>

,

styles: [

.completed {

text-decoration: line-through;

color: gray;

}

]

})

export class TodoListComponent {

todos: Todo[] = [

{ id: 1, title: 'Learn Angular', completed: false },

{ id: 2, title: 'Build a project', completed: false },

{ id: 3, title: 'Write documentation', completed: true }

];

}

FAQs

What is an Angular component?

An Angular component is a class decorated with @Component that controls a portion of the user interface through its template, styles, and logic.

How do I generate a component quickly?

Use Angular CLI commands such as ng generate component component-name or its shorthand ng g c component-name.

Can components have inputs and outputs?

Yes. Use @Input to accept data from parent components and @Output with EventEmitter to send events back to parents.

Where should I declare my components?

Components must be declared in the declarations array of an Angular module, typically in app.module.ts or a feature module.

What is the selector in a component?

The selector is a CSS selector used as a custom HTML tag to embed the component in templates.

Conclusion

Mastering how to create Angular components is essential for developing robust and scalable web applications. Components encapsulate UI logic, promote reusability, and foster maintainable codebases. By following the step-by-step guide, adhering to best practices, and leveraging powerful tools, developers can efficiently build feature-rich Angular applications.

Keep experimenting with different component architectures and patterns to deepen your understanding and improve your Angular development skills.