0Pricing
Angular Academy · บทเรียน

การสร้างไปป์แบบกำหนดเอง

สร้างไปป์แปลงข้อมูลที่นำกลับมาใช้ใหม่ได้

การสร้างไปป์แบบกำหนดเอง เป็นบทเรียน Angular Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Angular Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Angular Academy มีบทเรียนทั้งหมด 4 บทเรียน

ทำไมต้องใช้ไปป์แบบกำหนดเอง

เมื่อไปป์ในตัวมีความสามารถไม่เพียงพอ คุณสามารถสร้าง ไปป์แบบกำหนดเอง เพื่อรวบรวมตรรกะการแปลงที่นำกลับมาใช้ใหม่ได้สำหรับแม่แบบของคุณ

ตัวตกแต่ง @Pipe

ไปป์คือคลาสที่ตกแต่งด้วย @Pipe คุณสมบัติ name คือชื่อที่คุณใช้ในแม่แบบ

import { Pipe } from "@angular/core";

@Pipe({ name: "exclaim", standalone: true })
export class ExclaimPipe {}

การทำให้ใช้ PipeTransform ได้

คลาสของไปป์ใช้อินเทอร์เฟซ PipeTransform ซึ่งกำหนดให้ต้องมีเมธอด transform หนึ่งเมธอด

import { Pipe, PipeTransform } from "@angular/core";

@Pipe({ name: "exclaim", standalone: true })
export class ExclaimPipe implements PipeTransform {
  transform(value: string): string {
    return value + "!";
  }
}

เมธอด transform

พารามิเตอร์ตัวแรกของ transform คือค่าที่ส่งผ่านไปป์ สิ่งที่คุณส่งคืนจะกลายเป็นเอาต์พุตที่แสดงผล

transform(value: string): string {
  return value.trim();
}

การใช้งานไปป์ของคุณ

นำเข้าไปป์ในคอมโพเนนต์แบบสแตนด์อโลน จากนั้นใช้ชื่อของไปป์ในแม่แบบเช่นเดียวกับไปป์ในตัว

@Component({
  selector: "app-demo",
  standalone: true,
  imports: [ExclaimPipe],
  template: "<p>{{ 'hi' | exclaim }}</p>"
})
export class DemoComponent {}
// renders: hi!

การรับอาร์กิวเมนต์

พารามิเตอร์เพิ่มเติมหลัง value จะกลายเป็นอาร์กิวเมนต์ของไปป์ ผู้เรียกจะส่งค่าเหล่านี้ด้วยเครื่องหมายโคลอน

@Pipe({ name: "repeat", standalone: true })
export class RepeatPipe implements PipeTransform {
  transform(value: string, times: number): string {
    return value.repeat(times);
  }
}
// {{ "ab" | repeat:3 }} -> ababab

ค่าเริ่มต้นของอาร์กิวเมนต์

กำหนดค่าเริ่มต้นให้อาร์กิวเมนต์ เพื่อให้ผู้เรียกละเว้นอาร์กิวเมนต์เหล่านั้นได้ วิธีนี้ทำให้ไปป์ของคุณยืดหยุ่น

transform(value: string, times: number = 2): string {
  return value.repeat(times);
}
// {{ "ab" | repeat }} -> abab

การจัดการค่า Null และ Undefined

ตรวจสอบอินพุตที่ขาดหายไปเสมอ ส่งคืนค่าทดแทนที่เหมาะสมเมื่อค่าเป็น null หรือ undefined

transform(value: string | null): string {
  if (value == null) return "";
  return value.toUpperCase();
}

ตัวอย่างไปป์ Truncate

นี่คือตัวอย่างไปป์ที่ใช้งานได้จริงสำหรับย่อข้อความยาวและเติมจุดไข่ปลา

@Pipe({ name: "truncate", standalone: true })
export class TruncatePipe implements PipeTransform {
  transform(value: string, limit: number = 20): string {
    if (!value) return "";
    return value.length > limit
      ? value.slice(0, limit) + "..."
      : value;
  }
}

การระบุชนิดค่าที่ส่งคืน

ระบุชนิดค่าที่ส่งคืน เพื่อให้ TypeScript และแม่แบบของคุณตรวจสอบชนิดข้อมูลได้อย่างปลอดภัย ไปป์สามารถส่งคืนข้อมูลชนิดใดก็ได้ ไม่ใช่เฉพาะสตริง

@Pipe({ name: "double", standalone: true })
export class DoublePipe implements PipeTransform {
  transform(value: number): number {
    return value * 2;
  }
}

การลงทะเบียนในโมดูล (NgModule)

หากคุณใช้ NgModules แทนคอมโพเนนต์แบบสแตนด์อโลน ให้ประกาศไปป์ใน declarations และส่งออกไปป์หากจำเป็น

@NgModule({
  declarations: [TruncatePipe],
  exports: [TruncatePipe]
})
export class SharedModule {}

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจของคุณเกี่ยวกับไปป์แบบกำหนดเอง

สรุปทบทวน

คุณได้สร้างไปป์แบบกำหนดเองด้วย @Pipe และ PipeTransform รับอาร์กิวเมนต์พร้อมค่าเริ่มต้น ตรวจสอบค่า null และลงทะเบียนไปป์ในคอมโพเนนต์แบบสแตนด์อโลนหรือ NgModules

ถัดไป คุณจะเรียนรู้เกี่ยวกับไปป์แบบบริสุทธิ์และไปป์แบบไม่บริสุทธิ์

คำถามที่พบบ่อย

บทเรียน “การสร้างไปป์แบบกำหนดเอง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสร้างไปป์แบบกำหนดเอง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Angular Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Angular Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสร้างไปป์แบบกำหนดเอง”

สร้างไปป์แปลงข้อมูลที่นำกลับมาใช้ใหม่ได้ คุณปฏิบัติ Angular Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Angular Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Angular Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การสร้างไปป์แบบกำหนดเอง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Angular Academy นี้ได้ไหม

ได้ บทเรียน Angular Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การใช้ไปป์ในตัว
  2. การเชื่อมไปป์และการส่งพารามิเตอร์
  3. การสร้างไปป์แบบกำหนดเอง
  4. ไปป์แบบบริสุทธิ์เทียบกับแบบไม่บริสุทธิ์
← กลับไปที่ Angular Academy