Angular Standalone Components คืออะไร และทำไมถึงเป็นอนาคตของ Angular

#angular12 เม.ย. 2569

Standalone Components คืออะไร

ตั้งแต่ Angular 14 เป็นต้นมา Angular แนะนำ Standalone Components ซึ่งเป็นวิธีสร้าง component โดยไม่ต้องพึ่ง NgModule อีกต่อไป ทำให้โค้ดกระชับและเข้าใจง่ายขึ้นมาก

ปัญหาของ NgModule เดิม

ก่อนหน้านี้ทุก component ต้องถูก declare ใน NgModule ซึ่งทำให้

  • โค้ดซับซ้อนโดยไม่จำเป็น
  • ต้อง import module ซ้อนกันหลายชั้น
  • เริ่มต้นโปรเจ็คใหม่ยุ่งยาก

วิธีสร้าง Standalone Component

เพียงเพิ่ม standalone: true ใน decorator

import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterLink } from '@angular/router';

@Component({
  selector: 'app-home',
  standalone: true,
  imports: [CommonModule, RouterLink],
  template: `
    <h1>หน้าหลัก</h1>
    <a routerLink="/about">เกี่ยวกับเรา</a>
  `
})
export class HomeComponent {}

Bootstrap แบบ Standalone

ใน main.ts ใช้ bootstrapApplication แทน bootstrapModule

import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
import { provideRouter } from '@angular/router';
import { routes } from './app/app.routes';

bootstrapApplication(AppComponent, {
  providers: [
    provideRouter(routes)
  ]
});

Lazy Loading แบบ Standalone

// app.routes.ts
export const routes = [
  {
    path: 'dashboard',
    loadComponent: () =>
      import('./dashboard/dashboard.component')
        .then(m => m.DashboardComponent)
  }
];

เปรียบเทียบ NgModule vs Standalone

หัวข้อ NgModule Standalone
การ declare ต้องใส่ใน NgModule ไม่ต้อง
การ import import ทั้ง Module import เฉพาะที่ใช้
Bundle size ใหญ่กว่า เล็กกว่า (tree-shaking ดีกว่า)
ความซับซ้อน สูง ต่ำ

สรุป

Standalone Components เป็นทิศทางหลักของ Angular ในอนาคต Angular 17+ ใช้ Standalone เป็น default แล้ว ถ้าเริ่มโปรเจ็คใหม่ควรใช้ Standalone ตั้งแต่ต้นเลยครับ