Class Binding
Angular 提供了 [class.className]="condition"
的語法來動態綁定 class
基本語法
<!-- Angular -->
<div [class]="isActive">content</div>
這個功能等同於 Vue 中的 class 綁定:
<!-- Vue -->
<div :class="{ active: isActive }">content</div>
多個 Class 的綁定
在 Angular 中可以這樣寫:
<!-- Angular -->
<div
[class.active]="isActive"
[class.error]="hasError">
content
</div>
相同功能在 Vue 中的寫法:
<!-- Vue -->
<div :class="{
active: isActive,
error: hasError
}">
content
</div>
主要差異:
Angular 的寫法是分開綁定每個 class
Vue 的寫法是用物件統一管理
使用時機
當需要根據某個條件動態切換 class 時使用
適合用於:
切換元素的狀態(active/inactive)
顯示錯誤狀態
處理 UI 互動效果
ngClass 指令
當需要管理多個 class 時,使用 [ngClass]
會比較方便:
<!-- Angular ngClass -->
<div [ngClass]="{
'active': isActive,
'error': hasError,
'highlight': isHighlighted
}">
content
</div>
這個寫法在 Vue 中是:
<!-- Vue 多個 class -->
<div :class="{
active: isActive,
error: hasError,
highlight: isHighlighted
}">
content
</div>
選擇建議:
1-2 個 class:使用
[class.className]="condition"
3個以上的 class:使用
[ngClass]
實際範例
// component.ts
export class MyComponent {
isActive: boolean = false;
toggleActive() {
this.isActive = !this.isActive;
}
}
<!-- component.html -->
<button
[class.active]="isActive"
(click)="toggleActive()">
Toggle Active
</button>
Last updated