Angular 20

Angular Components Tutorial – Connecting Standalone Components in Angular 20

Chapter: Connecting Standalone Components in Angular 20

In this tutorial, we will see how to connect multiple standalone components in Angular 20 using their selector. This example does not use routing or data passing (@Input()). We’ll demonstrate both inline and external HTML approaches.

🎯 Objective

We will create three components:

  • AppComponent: The root component
  • StudentsComponent: Rendered inside AppComponent
  • MarksComponent: Rendered inside StudentsComponent

🛠️ Creating Standalone Components Using Angular CLI

Use the following CLI command to create a standalone component:

ng generate component students --standalone ( here  standalone is optional)
ng generate component marks --standalone  (here standalone is optional)
This will create components with standalone: true set in their decorators and automatically generate their CSS, HTML, and spec files.

📁 Project Structure


src/
├── app/
│   ├── app.ts
│   ├── students/
│   │   ├── students.component.ts
│   │   ├── students.component.html
│   ├── marks/
│   │   ├── marks.component.ts
│   │   ├── marks.component.html

🔹 1. Without External HTML Files (Inline Templates)

app.ts


import { Component } from '@angular/core';
import { StudentsComponent } from './students/students.component';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [StudentsComponent],
  template: \`
    <h1>Student Management App</h1>
    <app-students></app-students>
  \`
})
export class App {}

students.component.ts


import { Component } from '@angular/core';
import { MarksComponent } from '../marks/marks.component';

@Component({
  selector: 'app-students',
  standalone: true,
  imports: [MarksComponent],
  template: \`
    <h2>Student List</h2>
    <ul><li>Rahul</li><li>Priya</li></ul>
    <app-marks></app-marks>
  \`
})
export class StudentsComponent {}

marks.component.ts


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

@Component({
  selector: 'app-marks',
  standalone: true,
  template: \`
    <p>Student: Rahul</p>
    <p>Marks: 85</p>
  \`
})
export class MarksComponent {}

🔹 2. With External HTML Files (templateUrl)

app.ts


import { Component } from '@angular/core';
import { StudentsComponent } from './students/students.component';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [StudentsComponent],
  templateUrl: './app.html'
})
export class App {}

app.html


<h1>Student Management App</h1>
<app-students></app-students>

students.component.ts


import { Component } from '@angular/core';
import { MarksComponent } from '../marks/marks.component';

@Component({
  selector: 'app-students',
  standalone: true,
  imports: [MarksComponent],
  templateUrl: './students.component.html'
})
export class StudentsComponent {}

students.component.html


<h2>Student List</h2>
<ul><li>Rahul</li><li>Priya</li></ul>
<app-marks></app-marks>

marks.component.ts


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

@Component({
  selector: 'app-marks',
  standalone: true,
  templateUrl: './marks.component.html'
})
export class MarksComponent {}

marks.component.html


<p>Student: Rahul</p>
<p>Marks: 85</p>

📌 Summary

We demonstrated how to connect standalone components in Angular 20 using the selector property:

  • With CLI: Use --standalone flag
  • Inline templates: Quick for simple examples
  • External templates: Better for maintainability

This setup is beginner-friendly and can be extended with @Input() and routing as your project grows.

Next Chapter

In the next lesson, we’ll explore how to pass dynamic data between components using @Input() and how to emit events with @Output().

Leave a Reply

Your email address will not be published. Required fields are marked *