Tartalomjegyzék

< Angular

Angular Komponensek

A komponensekről

Egy weblapot több komponensből állíthatunk össze. A komponenseket két módon használhatom fel:

Beépítés

A legegyszerűbb eset, amikor egy komponenst a főkomponensbe ágyazunk, ahogy az ábra is szemlélteti:

De lehet akár több komponensünk:

De bármelyik komponens állhat több részből:

Csere

Útválasztás (routing) segítségével cserélhetjük az egyes komponenseket:

Ez lehet akár több komponens is:

Létrehozás

Szintaxis:

ng generate component <komponensnev>

Hozzunk létre például egy „employee” nevű komponenst:

ng generate component employee

A parancs rövidíthető:

ng g c employee

Ami létrejön

app01/
  `-src/
     `-employee/
        |-employee.component.css
        |-employee.component.html
        |-employee.component.spec.ts
        `-employee.component.ts
employee.component.html
<p>employee works!</p>
employee.component.ts
import { Component, OnInit } from '@angular/core';
 
@Component({
  selector: 'app-employee',
  templateUrl: './employee.component.html',
  styleUrls: ['./employee.component.css']
})
export class EmployeeComponent implements OnInit {
 
  constructor() { }
 
  ngOnInit(): void {
  }
 
}

A stílus fájl üres lesz, a teszt jelenleg lényegtelen.

Ahova be lesz jegyezve

//...
@NgModule({
  declarations: [
    AppComponent,
    EmployeeComponent,
  ],

Gyakorlat

Készítsen két komponenst a következő neveken:

Használható parancsok:

ng g c first
ng g c second

Válaszoljon a következő kérdésekre:

Komponensek törlése

Komponens törléséhez a következőt kell tenni:

ngOnInit

A komponensek a Component modul mellett importálnak egy OnInit nevű modult. Ez lehetővé teszi egy ngOnInit() metódusnak létezését, ami induláskor lefut, mint a konstruktor. A komponens létrehozásakor ez metódus létre is jön üresen.

Változók előkészítése

Az ngOnInit betöltéskor fut le. Ha innen szeretnénk előkészíteni egy tagváltozót a konstruktor helyett, a fordító panaszkodhat, ha be van állítva a strict mód a TypeScript fordító számára.

Ehhez hasonló hibaüzenetet kaphatunk:

property 'valami' has no initializer and is not definitely assigned in the constructor.

A megoldáshoz tagváltozók előkészítéséről kapcsoljuk ki a strict módot a tsconfig.json fájlban:

{
  "compileOnSave": false,
  "compilerOptions": {
    //...
    "strictPropertyInitialization": true
  },
  "angularCompilerOptions": {
   //...
  }
}

A felkiáltójel operátort is használhatjuk, amivel a fordítót arról tájékoztatjuk, hogy ne aggódjon, gondoskodunk a változó előkészítéséről:

valami!: ValamiTipus

Ez utóbbi az ajánlott.