Angular tutoriala

Angular 20 osagai autonomoak — seinale-sarrerak, OnPush aldaketa-detekzioa, txantiloi txertatuak, NgModulesik gabe, CSSrik gabe.

Zer eraikiko duzun

Harremanetarako formulario txiki bat — etiketadun sarrera, bidaltze-botoia, bi norabideko lotura, teklatu eta pantaila-irakurgailu portaera erreala — lehenik biluzik, gero estilatuta, 10 minutu inguruan.

Hasi aurretik

git, Node 22 edo berriagoa eta pnpm 10 edo berriagoa behar dituzu. Edozein Angular 20 proiektuk balio du — Angular CLI edo Analog.

1. pausoa — Lortu kodea

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

Osagaiak fitxategi lau gisa daude hemen: components/ — Button.ts, TextInput.ts — bakoitza txantiloi txertatua duen osagai autonomoa da, bere spec eta story-arekin. Barrel-ak index.ts osagai guztiak berresportatzen ditu; pnpm build Angular Package Format bundle bat sortzen du ng-packagr bidez.

2. pausoa — Zure lehen osagaia

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"); }
}

Osagai bakoitzak lily-* hautatzaile bat deklaratzen du eta elementu semantikoa errendatzen du bere klase-gakoarekin — <button class="button" type="button"> hemen. Sarrerak seinaleetan oinarrituak dira: label() honetarako: aria-label gainidazteko, className() klaseak gehitzeko.

3. pausoa — Osatu formulario txiki bat

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 etiketa ikusgarria bere label sarrera gisa hartzen du, etiketa-osagai habiaratu gisa baino — eman behin, eremuan, eta dagokion lily-text-input-ak label izen irisgarria ematen du. Sarrera-itxurako osagaiek model() balioak erakusten dituzte, beraz banana-box [(value)] bi norabideko loturak berehala funtzionatzen du — zoneless-ekin bateragarria osoan zehar.

2026-08-29an egiaztatua: aurreko zirriborro batek Label osagai bereizi bat habiaratzen zuen lily-fieldbarruan, eta honek bi etiketa errendatzen zituen (bat hutsik) zeren lily-field -k jada bere etiketa errendatzen baitu label sarreratik — osagaiaren iturburua begiratuz atzeman zen. harremanetarako formulario konposatuaren ibilbideak patroi bera du, benetako e2e eta axe probekin erabilia.

Egiaztatu zure lana: exekutatu aplikazioa eta formularioa soila ageri da — hain zuzen nahi bezala: estiloa oraindik aurrean dago. Sakatu Tab: fokua kontrol guztietatik pasatzen da, etiketa iragartzen da eta bidalketak funtzionatzen du. Portaera prest dago; itxura zurea da eta hurrengoa da.

4. pausoa — Estilatu

Estilatu klase-gakoak — .button, .text-input, .label, .field — hemen: styles.css, edo gehitu prest dagoen gai bat styles array-ra angular.json hemen / lotu hemen: index.html:

<link rel="stylesheet" href="/themes/adobe-spectrum.css" />

5. pausoa — Ikusi dena funtzionatzen

Angular + Analog adibide-aplikazioak katalogo osoa erakusten du fitxategietan oinarritutako bideratzearekin eta Vite-rekin:

git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-angular-examples
pnpm install && pnpm run dev

Hurrengo pausoak

Galderarik bidean? laguntza-orriak erantzunez beteta dago — eta pauso bat argiagoa izan badaiteke, esan iezaguzu eta pozik hobetuko dugu tutoriala.