Angular oktatóanyag
Angular 20 önálló komponensek — jelzőbemenetek, OnPush változásészlelés, beágyazott sablonok, nulla NgModule, nulla CSS.
Mit fogsz építeni
Egy kis kapcsolatfelvételi űrlap — címkézett mező, küldés gomb, kétirányú kötés, valódi billentyűzet- és képernyőolvasó-viselkedés — először csupaszon, aztán stílusosan, nagyjából 10 perc alatt.
Mielőtt elkezdenéd
Szükséged van gitre, Node 22-re vagy újabbra és pnpm 10-re vagy újabbra. Bármelyik Angular 20 projekt megfelel — Angular CLI vagy Analog.
1. lépés — Szerezd meg a kódot
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-angular-headless
pnpm install
pnpm test # vitest + TestBed, all 571 components
pnpm run build-storybook
A komponensek lapos fájlok itt: components/ —
Button.ts, TextInput.ts — mindegyik önálló komponens beágyazott sablonnal, plusz a hozzá tartozó spec és story. A barrel
index.ts újra exportál minden komponenst; pnpm build
az ng-packagr segítségével Angular Package Format csomagot készít.
2. lépés — Az első komponensed
import { Component } from "@angular/core";
import { Button } from "@lilydesignsystem/angular-headless";
@Component({
selector: "app-save-bar",
standalone: true,
imports: [Button],
template: `<lily-button (click)="save()">Save</lily-button>`,
})
export class SaveBar {
save() { console.log("saved"); }
}
Minden komponens egy lily-* szelektort deklarál, és a szemantikus elemet rendereli az osztálykampójával —
<button class="button" type="button"> itt. A bemenetek jelzőalapúak: label() az aria-label
felülíráshoz, className() osztályok hozzáfűzéséhez.
3. lépés — Állíts össze egy kis űrlapot
import { Component, signal } from "@angular/core";
import { Form, Field, TextInput, Button } from "@lilydesignsystem/angular-headless";
@Component({
selector: "app-contact-form",
standalone: true,
imports: [Form, Field, TextInput, Button],
template: `
<lily-form label="Contact form" (submit)="handleSubmit($event)">
<lily-field label="Full name" [required]="true">
<lily-text-input id="name" label="Full name" [(value)]="name" />
</lily-field>
<lily-button type="submit">Save</lily-button>
</lily-form>
`,
})
export class ContactForm {
name = signal("");
}
lily-field a látható címkét a saját
label bemeneteként veszi át beágyazott címkekomponens helyett — add át egyszer, a mezőnél, és a hozzá tartozó lily-text-inputa
label biztosítja a hozzáférhető nevet. A beviteli mezőszerű komponensek model() értékeket tesznek közzé, így a banana-box [(value)]
kétirányú kötés rögtön működik — végig zoneless-kompatibilis.
Ellenőrizve 2026-08-29: egy korábbi vázlat külön Label komponenst ágyazott be a lily-fieldelembe, ami két címkét renderelt (az egyik üres), mert a
lily-field már magától rendereli a sajátját a
label bemenetből — a komponens forráskódjának ellenőrzésével derült ki.
Az összeállított kapcsolatfelvételi űrlap útvonala
ugyanez a minta, valódi e2e- és axe-tesztekkel kipróbálva.
Ellenőrizd a munkádat: indítsd el az alkalmazást, és az űrlap csupasznak látszik — pontosan úgy, ahogy szántuk: a stílus még hátravan. Nyomd meg a Tabbillentyűt: a fókusz végigmegy minden vezérlőn, a címkét bemondja, és a küldés működik. A viselkedés kész; a megjelenés a tiéd, és a következő lépés.
4. lépés — Stílus hozzá
Stílusozd az osztálykampókat — .button, .text-input,
.label, .field — itt: styles.css, vagy adj hozzá egy kész témát a tömbhöz styles itt:
angular.json / hivatkozd itt: index.html:
<link rel="stylesheet" href="/themes/adobe-spectrum.css" />
5. lépés — Nézd meg, ahogy az egész működik
Az Angular + Analog példaalkalmazás a teljes katalógust mutatja fájlalapú útválasztással és Vite-tel:
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-angular-examples
pnpm install && pnpm run dev
További lépések
- Témák — váltás futásidőben az Angular theme-picker segédjével.
- Beállítási segédek — nyelv és szövegméret.
- Komponenskatalógus — tulajdonságok, ARIA és billentyűzet komponensenként.
Kérdésed akad útközben? A súgóoldal tele van válaszokkal — és ha egy lépés érthetőbb lehetne, szólj nekünk és szívesen javítjuk az oktatóanyagot.