Vodič za Angular
Samostalne komponente Angulara 20 — signalni ulazi, otkrivanje promjena OnPush, ugrađeni predlošci, nula NgModules, nula CSS-a.
Što ćete izraditi
Mali kontaktni obrazac — polje s oznakom, gumb za slanje, dvosmjerno vezivanje, stvarno ponašanje tipkovnice i čitača zaslona — najprije golo, zatim stilizirano, za otprilike 10 minuta.
Prije nego počnete
Trebaju vam git, Node 22 ili noviji i pnpm 10 ili noviji. Odgovara bilo koji projekt Angular 20 — Angular CLI ili Analog.
Korak 1 — Preuzmite kod
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
Komponente su ravne datoteke u components/ —
Button.ts, TextInput.ts — svaka je samostalna komponenta s ugrađenim predloškom, plus njezin spec i story. Barrel
index.ts ponovno izvozi svaku komponentu; pnpm build
izrađuje paket u formatu Angular Package Format preko ng-packagr.
Korak 2 — Vaša prva komponenta
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"); }
}
Svaka komponenta deklarira selektor lily-* i iscrtava semantički element sa svojom klasnom kukom —
<button class="button" type="button"> ovdje. Ulazi se temelje na signalima: label() za aria-label
za nadjačavanje, className() za dodavanje klasa.
Korak 3 — Sastavite mali obrazac
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 prima vidljivu oznaku kao vlastiti
label ulaz umjesto ugniježđene komponente oznake — proslijedite je jednom, na polju, a odgovarajući lily-text-inputiz
label daje pristupačno ime. Komponente nalik ulazima izlažu vrijednosti model() pa banana-box [(value)]
dvosmjerno vezivanje radi odmah — kompatibilno sa zoneless u cijelosti.
Provjereno 2026-08-29: raniji nacrt ugnijezdio je zasebnu komponentu Label unutar lily-field, što je iscrtalo dvije oznake (jednu praznu) jer
lily-field već iscrtava vlastitu iz ulaza
label — otkriveno provjerom izvornog koda komponente.
Složena ruta kontaktnog obrasca
isti je uzorak, isproban stvarnim e2e i axe testovima.
Provjerite svoj rad: pokrenite aplikaciju i obrazac izgleda golo — točno kako je zamišljeno: stiliziranje tek slijedi. Pritisnite Tab: fokus prolazi kroz svaku kontrolu, oznaka se izgovara i slanje radi. Ponašanje je gotovo; izgled je vaš i sljedeći je korak.
Korak 4 — Stilizirajte ga
Stilizirajte klasne kuke — .button, .text-input,
.label, .field — u styles.css, ili dodajte gotovu temu u polje styles u
angular.json / povežite je u index.html:
<link rel="stylesheet" href="/themes/adobe-spectrum.css" />
Korak 5 — Pogledajte kako sve radi
Primjer aplikacija Angular + Analog prikazuje cijeli katalog s usmjeravanjem temeljenim na datotekama i Viteom:
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-angular-examples
pnpm install && pnpm run dev
Sljedeći koraci
- Teme — prebacivanje tijekom izvođenja pomoćnikom theme-picker za Angular.
- Pomoćnici za postavke — jezik i veličina teksta.
- Katalog komponenti — svojstva, ARIA i tipkovnica po komponenti.
Pitanja usput? Stranica pomoći puna je odgovora — a ako neki korak može biti jasniji, javite nam i rado ćemo poboljšati vodič.