Angular 19 + PrimeNG ตอนที่ 4: Directive และ Pipe

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

Structural directives

ใช้เพื่อเปลี่ยนโครงสร้าง DOM เช่น ซ่อน แสดง Loop แสดงผล โดยใน Angular จะมี Built-in มาให้ แล้วและมีวิธีการใช้คือสามารถประกาศที่ HTML ได้เลย โดยหลัก ๆ ที่จะใช้มีดังนี้

  • *ngIf

ใช้เพื่อซ่อนแสดง DOM เมื่อตรงกับเงื่อนไข

<div class=”col-12” *ngIf=”condition”></div>

ตัวอย่าง

ตัวแปร two_way > 10 ให้ แสดง <p>two_way is more than 10</p>

ในกรณีอยากททำ else สามารถใช้ ng-template ได้

ผลลัพธ์

เมื่อ two_way <= 10

เมื่อ two_way > 10

  • *ngFor

ใช้ทำ Loop เพื่อแสดงผลใช้กับ Array

<div class=”col-12” *ngFor=”let item of array”>
{{ item }}
</div>

ตัวอย่าง

Loop แสดงผล 1-10 เป็น Card โดยใช้ col-4

ผลลัพธ์

Attribute directives

ใช้เพื่อ เปลี่ยนแปลงลักษณะของ element (เช่น สี, สไตล์, behavior) โดยมีหลายตัว แต่ที่นิยมใช้จะมีดังนี้

  • ngClass

ใช้เปลี่ยน CSS Class แบบ Dynamic จะมีการเพิ่ม Class เมื่อตรงเงื่อนไข

<p [ngClass]="{ classname: boolean }">Hello</p>

ตัวอย่าง

ผลลัพธ์

เมื่อ two_way <= 10

เมื่อ two_way > 10

  • ngStyle

เปลี่ยน Style ในรูปแบบ Inline โดยจะทำงานตามเงื่อนไข

<p [ngStyle]="{ css attb: boolean ? 'css value' : 'css value' }">Status</p>

ตัวอย่าง

ผลลัพธ์

เมื่อ two_way <= 20

เมื่อ two_way > 20

  • ngModel

ใช้ binding ตัวแปรใช้กับ Input

<input type="text" [(ngModel)]="var"/>

ตัวอย่าง

ผลลัพธ์

ก่อนพิมพ์

หลังพิมพ์ จะเห็นว่าค่าถูกเปลี่ยนทันที

Basic Pipe

Pipe ใช้สำหรับ แปลงประเภท หรือ Format ข้อมูล เช่นการแสดงวันที่ ตัวเลข โดยใช้ได้ทั้งก่อนการเรียกฟังก์ชันแสดงผล หรือ แสดงผลตรง ๆ เลยก็ได้ โดยที่ใช้บ่อย ๆ จะมีดังนี้

  • date
  • uppercase
  • lowercase
  • currency
  • percent
  • number

โดยวิธีการใช้ให้ระบุ Pipe ที่หลังตัวแปรโดยขั้นด้วย “|” ก็สามารถใช้งานได้เลย

{{ variable_name | pipe }}

ตัวอย่าง

ตัวแปรข้อมูล<br>

HTML

ผลลัพธ์

Custom Pipe

สามารถสร้าง Pipe เป็นของตัวเองได้ เพื่อแปลงข้อมูลเฉพาะทาง โดยวิธีทำมีดังนี้

ng generate pipe <path/ชื่อ pipe ที่จะสร้าง>
ng g p <path/ชื่อ pipe ที่จะสร้าง>

เมื่อสร้างแล้วก็จะได้ไฟล์ pipe ออกมาให้ทำการเขียน transform เพื่อให้ได้ผลลัพธ์ตามที่ต้องการ เช่นต้องการ Reverse อักขระ

อย่าลืม Import ที่ไฟล์ AppModule (โดยปกติจะ Auto Import ให้แล้ว)

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

ตัวแปรข้อมูล<br>

HTML

ผลลัพธ์

การเรียกใช้ Pipe ภายในไฟล์ .ts

ในการเรียกใช้บน .ts นั้นเราจะเรียกตรง ๆ โดยใช้ “|” ขั้นที่ตัวแปรไม่ได้ แต่สามารถ Import แล้วเรียกใช้ผ่าน pipe transform ได้ โดยมีวิธีการดังนี้

Import Pipe ใน Component ที่ต้องการใช้งาน

ตัวอย่าง

Reverse Pipe ที่มีมาแล้วใน LAB

ประกาศตัวแปรเก็บ Pipe โดย Pipe ถือเป็น 1 Object ต้องใช้ new Object();

ตัวแปร = new <ชื่อ Object ของ Pipe>();

เช่น

reversePipe = new ReversePipe();

เรียกใช้ในจุดที่ต้องการได้เลย

ตัวแปร = this.<ตัวแปรเก็บ Pipe>.transform(<ข้อมูล>)

ตัวอย่าง

ผลลัพธ์

🧪 LAB: ทำ Pipe เพื่อแสดงวันที่ในรูปแบบไทย และเป็นปี พ.ศ.

ให้สร้าง Pipe ชื่อ bdate เพื่อทำให้แปลงข้อมูลเป็นวันที่ในรูปแบบไทย

ใช้คำสั่ง

ng g p pipes/bdate

เขียน pipe ให้รับข้อมูลแล้วแปลงออกมาพร้อม return ให้ถูกในลักษณะของ วัน เดือน ปี พ.ศ.

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

Wutthiphon Tassana
Wutthiphon Tassana