Angular 19 + PrimeNG ตอนที่ 6: แนะนำ PrimeNG, PrimeIcons และ PrimeFlex

บทความนี้เป็นส่วนหนึ่งของซีรีส์ Angular + PrimeNG 19 (CSR, non-standalone) เรียบเรียงจากคู่มืออบรมของ Wutthiphon Tassana — Wirabyte CO., LTD. — ตอนที่ 6/10

Prime NG เป็น CSS UI Suite ตัวหนึ่งของ Angular เดิมที Angular พัมนาดดย Google ดังนั้น UI หลักที่ใช้จะเป็น Material ซึ่งคล้ายกับ UI บนมือถือ Android แต่ Prime NG ก็เป็นอีก 1 ทางเลือก เนื่องจากภายในนั้นสามารถเลือก Theme ได้อีกว่าอยากจะใช้ Preset อะไร และแต่ละแบบก็จะมีความแตกต่างกัน รวมถึงมี Component ให้เลือกใช้ได้มากกว่า ทำให้เป็นตัวเลือกที่ดีในการทำโปรเจคขนาดใหญ่

หน้าเว็บ PRIMENG Version 20

โดยวิธีเริ่มให้คลิกที่ Get Started ได้เลยซึ่งก็จะมีแนะนำวิธีการติดตั้ง และ Component ต่าง ๆให้เลือกดู รวมถึงมี Icon และ Layout เพิ่มเติมอีกด้วย โดย Prime NG สามารถใช้ Layout จาก Tailwind หรือ Prime Flex ก็ได้ นอกจากนี้หาจ่ายเงินจะสามารถใช้ Theme Designer ที่ทำให้สามารถ Custom Component เองได้ผ่านหน้าเว็บแล้ว Download ไฟล์เพื่อนำไปใช้กับโปรเจคได้อีกด้วย

ลองเลือกสีต่าง ๆ และ Preset ได้ที่เมนูด้านขวาบน สามารถลองดูผลลัพธ์จากหน้า Component ได้

วิธีการติดตั้ง Prime NG Prime Icon และ Prime Flex ใน Angular 19 (Prime 19)

(ใน LAB มีการติดตั้งให้แล้วเรียบร้อยแล้ว)

ติดตั้ง Package ของ Prime NG

npm install primeng primeflex primeicons @primeuix/themes @primeuix/themes
// กรณีต้องการใช้ ChartJS
npm install chart.js --save
// กรณีต้องการใช้ Editor
npm install quill

ที่ไฟล์ app.module.ts ให้เรียกใช้งาน Theme และ Component ที่ต้องการ

import { definePreset, palette } from '@primeng/themes';
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
import { providePrimeNG } from 'primeng/config';
import Aura from '@primeuix/themes/<Preset เช่น aura>';  // กำหนด Preset Theme ตรงนี้
const ThemeConfig = definePreset(Aura, {
semantic: {
primary: palette('{<สี เช่น blue> }'),   // สีที่ต้องการใช้ดูตัวอย่างจากเว็บ Prime NG
},
});
// Prime NG Component Module เช่น
import { ButtonModule } from 'primeng/button';
…
@NgModule({   declarations: [AppComponent  , …]   imports: [… , ButtonModule , …]   providers: [     … ,      provideAnimationsAsync,     providePrimeNG({
theme: {
preset: ThemeConfig,
options: {
darkModeSelector: '.non-dark-selector',  // ปิดการใช้ Dark mode
},
},     …   ] })
export class AppModule {}

Note: Compoennt ต่าง ๆ หากมีการแยก Module ย่อยจะต้อง Import ใหม่ในแต่ละ Module แต่ Theme สามารถ Import ที่ App Module ที่เดียวไม่ต้อง Import ใหม่ในแต่ละ Module ย่อยแล้ว

ทดลองเรียกใช้งาน

// เรียกใช้ผ่าน Template
<button pButton label=”Button” icon=”pi pi-check” class=””></button>
// หรือเรียกแบบใช้ Component ตรง ๆ
<p-button label=”Submit” icon=” pi pi-check” styleClass=””></p-button>

ก็จะได้ปุ่มตามรูป

Style class ของปุ่มที่ควรรู้

ขนาดปุ่ม: p-button-sm p-button-lg

สีปุ่ม: p-button-success p-button-warn p-button-danger p-button-secondary

หน้าตาปุ่ม: p-button-rounded p-button-raised p-button-text p-button-outlined

Component อื่น ๆ ที่แนะนำ

AutoComplete

Checkbox

binary = true เป็นการ return ค่าของ checkbox กลับเป็น Boolean (true/false)

DatePicker

Editor (ต้องติดตั้ง quill)

Input Group

InputMask

InputNumber

InputText

KeyFilter

Multiselect

Password

RadioButton

Select (Dropdown)

Textarea

Button

PickList

Table

Timeline

Accordion

Card

Divider

Fieldset

Panel

Tabs

Toolbar

ConfirmDialog

Dialog

Menubar

PanelMenu

Message

Image

Badge

Tag

ProgressSpinner

ProgressBar

Skeleton

MeterGroup

Chip

Prime Icon

Library ของ prime icon ก็จะมี icon มาให้ใช้บางส่วน ข้อดีคือโหลดได้รวดเร็วกว่า Font awesome

Prime Flex (https://primeflex.org)

Library ของ Prime ที่ใช้สำหรับจัดการ Layout โดยที่ใช้บ่อย ๆ ก็จะมี 2 ระบบ

Grid – ใช้ระบบ Grid 12 ช่อง

<div class=”grid”>
<div class=”col-12 md:col-4”></div>
<div class=”col-12 md:col-8”></div>
</div>

Flex

<div class=”flex flex-warp justify-content-center w-full”>
<div></div>
</div>

ให้ศึกษาเพิ่มเติมจาก: https://primeflex.org/ ในส่วน Flexbox และ Grid

Wutthiphon Tassana
Wutthiphon Tassana