Angular中点击<li>元素切换active类的实现方法
实现Angular中点击切换active类的方法
我来给你说个贴合需求又符合Angular风格的实现方式,不用手动操作DOM,靠数据绑定就能轻松搞定:
步骤1:在组件中维护当前选中的
首先在你的组件类里添加一个变量,用来记录当前被点击激活的
currentActiveLi: string = 'en'; // 对应第一个默认active的li useLanguage(language: string, activeLi: string) { this.translate.use(language); // 新增这行,更新当前激活的li标识 this.currentActiveLi = activeLi; }
步骤2:在模板中动态绑定active类并传递标识
修改你的<li>元素,通过[ngClass]判断当前激活标识是否匹配,同时给click事件传递当前li的标识:
<!-- 去掉原来的active类,改为动态绑定 --> <li class="en" [ngClass]="{'active': currentActiveLi === 'en'}" (click)="useLanguage('fr', 'en')"></li> <li class="sp" [ngClass]="{'active': currentActiveLi === 'sp'}" (click)="useLanguage('zh', 'sp')"></li> <li class="po" [ngClass]="{'active': currentActiveLi === 'po'}" (click)="useLanguage('en', 'po')"></li>
原理说明
这种方式通过数据状态(currentActiveLi)来驱动视图变化,完全符合Angular的响应式设计理念,比直接用原生JS去查找DOM元素、手动添加/删除类要更优雅,也更容易维护和扩展。每次点击
active类,并移除其他active类。内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

