You need to enable JavaScript to run this app. Angular 11实现点击图标切换类名(fa-eye与fa-eye-slash互切)
优惠活动
大模型
产品
解决方案
定价
更多

Angular 11实现点击图标切换类名(fa-eye与fa-eye-slash互切)

Angular 11 切换图标类实现方案

实现步骤

1. 组件TypeScript文件定义状态

在你的组件类中新增布尔状态变量,用来标记当前的图标显示状态,默认设为true对应睁眼图标:

// 组件类内部代码
isEyeOpen = true;

如果后续需要和其他逻辑联动(比如同步切换密码输入框的显隐),可以把状态切换逻辑抽成独立方法:

// 可选:封装切换方法,方便扩展联动逻辑
toggleIconState() {
  this.isEyeOpen = !this.isEyeOpen;
  // 关联逻辑可追加在这里,例如:
  // this.passwordInputType = this.isEyeOpen ? 'text' : 'password';
}

2. HTML模板绑定动态类与点击事件

利用Angular的类绑定能力,根据状态变量动态切换对应的图标类,同时绑定点击事件触发状态变更:

写法1:单类绑定(逻辑清晰易读)

<i 
  class="fa" 
  [class.fa-eye]="isEyeOpen" 
  [class.fa-eye-slash]="!isEyeOpen"
  aria-hidden="true"
  (click)="isEyeOpen = !isEyeOpen"
></i>

如果使用刚才封装的切换方法,点击事件替换为(click)="toggleIconState()"即可。

写法2:ngClass批量绑定(适合类较多的场景)

<i 
  class="fa" 
  [ngClass]="{ 'fa-eye': isEyeOpen, 'fa-eye-slash': !isEyeOpen }"
  aria-hidden="true"
  (click)="toggleIconState()"
></i>

两种写法效果完全一致,不需要手动操作DOM,状态变更后Angular会自动更新元素的类名。


内容的提问来源于stack exchange,提问作者ojy2021

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 10:45:09