មេរៀន Angular

សមាសភាគឯករាជ្យ Angular 20 — signal inputs, ការរកឃើញការផ្លាស់ប្តូរ OnPush, គំរូក្នុងបន្ទាត់, គ្មាន NgModules, CSS សូន្យ។

អ្វីដែលអ្នកនឹងសាងសង់

ទម្រង់ទំនាក់ទំនងតូចមួយ — វាលបញ្ចូលដែលមានស្លាក ប៊ូតុងដាក់ស្នើ ការចងពីរទិស អាកប្បកិរិយាក្តារចុច និងកម្មវិធីអានអេក្រង់ពិតប្រាកដ — ដំបូងទទេស្អាត បន្ទាប់មកមានរចនាប័ទ្ម ក្នុងរយៈពេលប្រហែល ១០ នាទី។

មុនពេលអ្នកចាប់ផ្តើម

អ្នកត្រូវការ git, Node 22 ឬថ្មីជាងនេះ និង pnpm 10 ឬថ្មីជាងនេះ។ គម្រោង Angular 20 ណាក៏បាន — Angular CLI ឬ Analog។

ជំហាន ១ — យកកូដ

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

សមាសភាគជាឯកសារសំប៉ែតក្នុង components/ — Button.ts, TextInput.ts — នីមួយៗជាសមាសភាគឯករាជ្យដែលមានគំរូក្នុងបន្ទាត់ បូក spec និង story របស់វា។ barrel index.ts នាំចេញឡើងវិញនូវសមាសភាគនីមួយៗ; pnpm build បង្កើតកញ្ចប់ Angular Package Format តាមរយៈ ng-packagr។

ជំហាន ២ — សមាសភាគដំបូងរបស់អ្នក

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

សមាសភាគនីមួយៗប្រកាស lily-* ឧបករណ៍ជ្រើស ហើយបង្ហាញធាតុន័យវិទ្យាជាមួយ class hook របស់វា — <button class="button" type="button"> នៅទីនេះ។ ធាតុបញ្ចូលផ្អែកលើ signal៖ label() សម្រាប់ aria-label ការបដិសេធ className() ដើម្បីបន្ថែមថ្នាក់។

ជំហាន ៣ — ផ្សំទម្រង់តូចមួយ

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 យកស្លាកដែលមើលឃើញជា label ធាតុបញ្ចូលផ្ទាល់ខ្លួន ជាជាងសមាសភាគស្លាកដែលជាប់គ្នា — ឆ្លងវាម្តងនៅលើវាល ហើយ lily-text-inputដែលត្រូវគ្នានៅលើ label ផ្តល់ឈ្មោះដែលអាចចូលប្រើបាន។ សមាសភាគដូចធាតុបញ្ចូលបង្ហាញ model() តម្លៃ ដូច្នេះ banana-box [(value)] ការចងពីរទិសដំណើរការភ្លាមៗ — ត្រូវគ្នាជាមួយ zoneless ពេញមួយ។

បានផ្ទៀងផ្ទាត់ 2026-08-29៖ សេចក្តីព្រាងដំបូងបានដាក់សមាសភាគដាច់ដោយឡែក Label នៅខាងក្នុង lily-fieldដែលបង្ហាញ ពីរ ស្លាក (មួយទទេ) ពីព្រោះ lily-field បានបង្ហាញរបស់ខ្លួនរួចហើយពី label ធាតុបញ្ចូល — បានរកឃើញដោយពិនិត្យប្រភពសមាសភាគ។ ផ្លូវទម្រង់ទំនាក់ទំនងផ្សំ ជាលំនាំដូចគ្នា ដែលធ្វើតេស្តដោយ e2e និង axe ពិតប្រាកដ។

ពិនិត្យការងាររបស់អ្នក៖ ដំណើរការកម្មវិធី ហើយទម្រង់មើលទៅធម្មតា — ដូចដែលបានគ្រោងទុក៖ រចនាប័ទ្មនៅខាងមុខ។ ចុច Tab៖ ការផ្តោតផ្លាស់ទីតាមការគ្រប់គ្រងនីមួយៗ ស្លាកត្រូវបានប្រកាស ហើយការដាក់ស្នើដំណើរការ។ អាកប្បកិរិយាបានចប់; រូបរាងជារបស់អ្នក ហើយជាជំហានបន្ទាប់។

ជំហាន ៤ — ដាក់រចនាប័ទ្ម

ដាក់រចនាប័ទ្ម class hook — .button, .text-input, .label, .field — ក្នុង styles.cssឬបន្ថែមស្បែករួចជាស្រេចទៅអារេ styles ក្នុង angular.json / ភ្ជាប់វាក្នុង index.html:

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

ជំហាន ៥ — មើលអ្វីៗទាំងអស់ដំណើរការ

កម្មវិធីគំរូ Angular + Analog បង្ហាញកាតាឡុកពេញលេញជាមួយការរុករកផ្អែកលើឯកសារ និង Vite៖

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

ជំហានបន្ទាប់

មានសំណួរតាមផ្លូវ? ទំព័រជំនួយ ពេញដោយចម្លើយ — ហើយប្រសិនបើជំហានណាអាចច្បាស់ជាងនេះ ប្រាប់យើង ហើយយើងនឹងកែលម្អមេរៀនដោយអំណរ។