[英]Conditional class in *NgFor with angular
I have this html code: 我有这个html代码:
<div class="chip-idiomas">
<mat-chip-list multiple [selectable]="true">
<mat-chip *ngFor="let idioma of idiomas"
class="chip"
[ngClass]="{'chip-selecionado' : isClassVisible}"
[selected]="idioma"
(click)="isClassVisible = !isClassVisible;changeSelected('s', idioma)">
{{ idioma.nome }}
</mat-chip>
</mat-chip-list>
</div>
When I click on the chip, the class change in all , not just in the chip clicked. 当我单击芯片时,所有类均发生变化,而不仅仅是单击的芯片。 I'm using Angular 5.
我正在使用Angular 5。
I wish just the clicked element changed the css 我希望只是单击元素更改了CSS
See this pic before and after 看到这张照片之前和之后
can Someone help? 有人可以帮忙吗?
I would suggest you to store index
in isClassVisible
and rename it to something like visibleClassIndex
, and check in [ngClass]
if current class is visible by checking current index
with visibleClassIndex
, since there will be 0
index, which is false
value, I would suggest you to define visibleClassIndex
type as null | number
我建议您将
index
存储在isClassVisible
,并将其重命名为visibleClassIndex
,然后通过用visibleClassIndex
检查当前index
来检查[ngClass]
当前类是否可见,因为将有0
索引,这是false
值,我建议您将visibleClassIndex
类型定义为null | number
null | number
or undefined | number
null | number
或undefined | number
undefined | number
and do check like so visibleClassIndex !== null && visibleClassIndex === i
or visibleClassIndex !== undefined && visibleClassIndex === i
, if you will choose null
make sure to assign null
as default value visibleClassIndex: null | number = null;
undefined | number
,并像这样进行检查visibleClassIndex !== null && visibleClassIndex === i
或visibleClassIndex !== undefined && visibleClassIndex === i
,如果您选择null
确保将null
为默认值visibleClassIndex: null | number = null;
visibleClassIndex: null | number = null;
, I would suggest to use undefined
, because with it you don't need to define default type, since it automatically will be undefined
,我建议您使用
undefined
,因为有了它,您不需要定义默认类型,因为它会自动变为undefined
<div class="chip-idiomas">
<mat-chip-list multiple [selectable]="true">
<mat-chip *ngFor="let idioma of idiomas"
class="chip"
[ngClass]="{'chip-selecionado' : visibleClassIndex !== undefined && visibleClassIndex === i}"
[selected]="idioma"
(click)="visibleClassIndex = i;changeSelected('s', idioma)">
{{ idioma.nome }}
</mat-chip>
</mat-chip-list>
</div>
Solution:- 解:-
Stackblitz Link:- https://stackblitz.com/edit/angular-material-jyzotv?file=app%2Fapp.component.html Stackblitz链接:-https://stackblitz.com/edit/angular-material-jyzotv?file = app%2Fapp.component.html
<div class="chip-idiomas">
<mat-chip-list multiple [selectable]="true">
<mat-chip *ngFor="let idioma of idiomas;let isFirst = first"
[selected]="tab === idioma"
class="chip"
[class.active]="tab === idioma"
(click)="activateClass(idioma)">
{{ idioma }}
</mat-chip>
</mat-chip-list>
</div>
<div class="chip-idiomas">
<mat-chip-list multiple [selectable]="true">
<mat-chip *ngFor="let idioma of idiomas;let isFirst = first"
class="chip"
[class.active]="tab === idioma"
(click)="activateClass(idioma)">
{{ idioma }}
</mat-chip>
</mat-chip-list>
</div>
-- -
export class AppComponent {
idiomas = ['A','B','C']
tab = this.idiomas[0];
activateClass(subModule){
this.tab = subModule;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.