嗨我有無序列表,他們都有活躍的類。點擊任何列表項時,我想切換活動類。我的代碼是這樣的給予積極的課onclick在ngFor角2
<ul class="sub_modules">
<li *ngFor="let subModule of subModules" class="active">
<a>{{ subModule.name }}</a>
</li>
</ul>
任何人都可以幫助我做到這一點?
嗨我有無序列表,他們都有活躍的類。點擊任何列表項時,我想切換活動類。我的代碼是這樣的給予積極的課onclick在ngFor角2
<ul class="sub_modules">
<li *ngFor="let subModule of subModules" class="active">
<a>{{ subModule.name }}</a>
</li>
</ul>
任何人都可以幫助我做到這一點?
你可以這樣做:
<ul class="sub_modules">
<li (click)="activateClass(subModule)"
*ngFor="let subModule of subModules"
[ngClass]="{'active': subModule.active}">
<a>{{ subModule.name }}</a>
</li>
</ul>
上的分量
activateClass(subModule){
subModule.active = !subModule.active;
}
在伍類的第一屬性是你想添加第二個是條件類;
我相信你可以在這裏找到答案:AngularJs - Best-Practices on adding an active class on click (ng-repeat)
您可以定位和應用CSS通過角的$index
項/對象。這篇文章比我能解釋和演示邏輯更好。
對不起,但你的答案不是我想要的。 –
只是做一個索引屬性。使用let i = index
使用(單擊)事件設置索引。然後檢查是否selectedIndex === i
如果是集合類「主動」爲真
<ul class="sub_modules">
<li *ngFor="let subModule of subModules; let i = index"
[class.active]="selectedIndex === i"
(click)="setIndex(i)">
<a>{{ subModule.name }}</a>
</li>
</ul>
然後在打字稿文件:只需將selectedIndex。
export class ClassName {
sIndex: number = null;
setIndex(index: number) {
sIndex = index;
}
}
你有一個錯誤在你的HTML塊。 '[class.active] ='sIndex === i''而不是'[class.active] ='selectedIndex === i''。否則,很好的答案:-) – Hooligancat
謝謝@Eduardo ..這是我想要的,但所有列表項目應該已經是活躍的課程..所以我該怎麼做? –
你可以做一個映射到數組。 array.map(obj => { obj.active = false; return obj; }) –
非常感謝。我做了obj.active = true ...這是我想要的)它完美的工作) –