Angular 模板語法:ngFor 迴圈與事件綁定的示意圖

← INSIGHTS & PERSPECTIVES | 前端開發

Angular 新手教程:用 *ngFor 迴圈、(click) 事件與條件 class 建立可點選的英雄列表

Angular 新手教程:用 *ngFor 迴圈顯示完整列表、用 (click) 綁定點擊事件、用 [class.selected] 條件式加上類別,一步步做出可點選並突顯選取項目的英雄列表。

這篇是我照著 Angular 官方 Tour of Heroes 教程做的第三篇新手筆記,要解決的問題很具體:怎麼把一個寫死的陣列用 *ngFor 迴圈顯示成列表、怎麼用 (click) 讓每個項目可以點選,以及怎麼用條件式 class 把「目前選中的那一筆」突顯出來。三個步驟做完,就會有一個最基本但完整可互動的選擇列表。

如何用 *ngFor 迴圈顯示完整列表?

延續上一篇的範例(可到 Angular 官方提供的 toh-pt1.zip 下載)。

首先開啟 src/app/heroes/heroes.component.ts,設定一個變數 heroes

heroes: Hero[] = [
  { id: 11, name: 'Mr. Nice' },
  { id: 12, name: 'Narco' },
  { id: 13, name: 'Bombasto' },
  { id: 14, name: 'Celeritas' },
  { id: 15, name: 'Magneta' },
  { id: 16, name: 'RubberMan' },
  { id: 17, name: 'Dynama' },
  { id: 18, name: 'Dr IQ' },
  { id: 19, name: 'Magma' },
  { id: 20, name: 'Tornado' }
];

接著開啟 app.component.html,利用 *ngFor 來迴圈式的顯示列表內容:

<ul class="heroes">
  <li *ngFor="let hero of heroes">
    <span class="badge">{{hero.id}}</span> {{hero.name}}
  </li>
</ul>

這時網頁上就可以看到成果如下圖:

用 *ngFor 迴圈顯示英雄列表的成果

更多資訊可參考 Angular 官方關於 ngFor 的說明

如何用 (click) 綁定點擊事件?

開啟 src/app/heroes/heroes.component.html(模板),在 li 裡面增加 click 的事件:

<li *ngFor="let hero of heroes" (click)="onSelect(hero)">

再到 src/app/heroes/heroes.component.ts 增加處理的函數:

selectedHero: Hero;

onSelect(hero: Hero): void {
  this.selectedHero = hero;
}

這樣使用者每點一個項目,selectedHero 就會被更新成被點到的那個 hero,之後的條件式樣式與詳情顯示都是建立在這個基礎上。

更多資訊可參考 Angular 官方關於 event binding 的說明

如何用條件式為元件增加類別?

打開 heroes.component.html,在 li 內增加 [class.要增加的類別名稱]="條件式為 true 時增加"

<li *ngFor="let hero of heroes"
  [class.selected]="hero === selectedHero"
  (click)="onSelect(hero)">
  <span class="badge">{{hero.id}}</span> {{hero.name}}
</li>

這樣當 hero === selectedHero 為真時,這個 li 就會被加上 selected 這個類別。接下來再到 src/app/heroes/heroes.component.css 設定該類別的 CSS,就能突顯現在所選據的是哪一個了:

.selected {
  color: red;
}

成果如下圖,被點選的項目會變成紅色:

被選取的英雄項目以 selected 類別突顯

常見問題

Q*ngFor 是做什麼用的?

*ngFor 是 Angular 的結構型指令,用來對陣列做迴圈,為每個元素產生一份對應的模板(例如 <li>)。寫法是 *ngFor="let hero of heroes",在迴圈內就能直接使用 hero 這個變數。

Q(click)="onSelect(hero)" 的運作原理是什麼?

(click) 是 Angular 的事件綁定語法,把 DOM 的 click 事件連到元件裡的 onSelect 方法,並把被點到的 hero 當參數傳進去。每次點擊都會執行該方法,這裡就是把 selectedHero 更新為被點選的項目。

Q[class.selected] 和直接寫 class 有什麼不同?

[class.selected]="條件式" 是條件式類別綁定:只有當條件為 true 時,才會把 selected 這個 class 加到元素上。寫死的 class="..." 則是固定不變的,無法隨資料狀態切換樣式。

Q這個範例的完整原始碼在哪裡下載?

本篇延續 Angular 官方 Tour of Heroes 教程,第一階段的範例可從官方提供的 toh-pt1.zip 下載,再照著本文的步驟修改即可。

參考資料

延伸閱讀

最後更新

2026-08-28(原文發布於 2017-12-22,本文保留原始筆記內容並補上 GEO 結構。)

關於作者

Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。

首次發布:2017-12-22