Kurs Angular · Moduł 3: Moduły

Standalone Components vs NgModules

1 min czytania ·
W tej lekcji3

Angular 17+ preferuje Standalone Components - prostsze podejście bez modułów.

Porównanie Podejść

Stary Sposób (NgModule-based)

// samurai.component.ts
@Component({
  selector: 'app-samurai',
  standalone: false,
  templateUrl: './samurai.component.html'
})
export class SamuraiComponent { }

// samurai.module.ts
@NgModule({
  declarations: [SamuraiComponent],
  imports: [CommonModule, SharedModule],
  exports: [SamuraiComponent]
})
export class SamuraiModule { }

Nowy Sposób (Standalone)

// samurai.component.ts - wszystko w jednym pliku!
@Component({
  selector: 'app-samurai',
  standalone: true,
  imports: [CommonModule, CardComponent, ButtonComponent],
  templateUrl: './samurai.component.html'
})
export class SamuraiComponent { }

// Użycie - bezpośredni import
@Component({
  standalone: true,
  imports: [SamuraiComponent]
})
export class AppComponent { }

Lazy Loading ze Standalone

// app.routes.ts
export const routes: Routes = [
  {
    path: 'samurai',
    loadComponent: () => import('./samurai/samurai.component')
      .then(c => c.SamuraiComponent)
  },
  {
    path: 'dojo',
    loadChildren: () => import('./dojo/dojo.routes')
      .then(r => r.DOJO_ROUTES)
  }
];

Kiedy Używać Czego?

ScenariuszRekomendacja
Nowy projekt (Angular 17+)Standalone Components
Legacy projektPozostań przy NgModules
Biblioteka AngularStandalone (łatwiejsze użycie)
Duży enterprise projektMożesz mieszać oba podejścia

Widzisz błąd w tej lekcji?

Sprawdź się

Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.

  1. 1. Od której wersji Angular Standalone Components są domyślnym i zalecanym podejściem?

  2. 2. Gdzie standalone component deklaruje swoje zależności (np. CommonModule)?

To 2 z 4 pytań do tej lekcji. Pozostałe rozwiążesz w grze.

Zadania praktyczne w grze

  • Edytor kodu

    Uzupełnij komponent karty samuraja tak, by działał bez NgModule i sam dołączał CommonModule oraz RouterLink, których używa jego szablon.

  • Układanie w poziomie

    Ułóż tokeny linii oznaczającej komponent jako standalone w dekoratorze:

  • Klikanie w kolejności

    Kliknij elementy w kolejności, aby zbudować początek lazy loadingu standalone: loadComponent: () =>

Przydatne artykuły