angular - ngClass calls method Multiple times
问题描述
I have created a method and attached it to ngClass for adding two styles depending upon the condition.I am also passing the number as parameter to be used in the switch case.
component.html
<div class="circle" [ngClass]="setMyClassesCircle(1)">
<div class="circle" [ngClass]="setMyClassesCircle(2)">
<div class="circle" [ngClass]="setMyClassesCircle(3)">
<div class="circle" [ngClass]="setMyClassesCircle(4)">
component.ts
setMyClassesCircle(val)
{
let circleClasses
console.log('Inside method')
switch(val)
{
case 1:
{
circleClasses = {
'inprogress-circle': this.inProgress == val,
'completed-circle': this.oneCompleted == true
}
break;
}
case 2:
{
circleClasses = {
'inprogress-circle': this.inProgress == val,
'completed-circle': this.twoCompleted == true
}
break;
}
case 3:
{
circleClasses = {
'inprogress-circle': this.inProgress == val,
'completed-circle': this.threeCompleted == true
}
break;
}
case 4:
{
circleClasses = {
'inprogress-circle': this.inProgress == val,
'completed-circle': this.fourCompleted == true
}
break;
}
Through this way I am binding circleClasses to my template.
But the issue I am facing is setMyClassesCircle() method is called more than 10 times, while I am calling the method only four times.'Inside method' is printed more than 10 times in my console.
I could not figure out why the method is being called these many number of times.
解决方案
I think it called many times because of angular change detection, the cleaner solution is to use ngclass in-line like this:
<div class="circle" [ngClass]="{
'inprogress-circle': inProgress == 1,
'completed-circle': oneCompleted == true }" >
<div class="circle" [ngClass]="{
'inprogress-circle': inProgress == 2,
'completed-circle': oneCompleted == true }" >
<div class="circle" [ngClass]="{
'inprogress-circle': inProgress == 3,
'completed-circle': oneCompleted == true }" >
<div class="circle" [ngClass]="{
'inprogress-circle': inProgress == 4,
'completed-circle': oneCompleted == true }" >
推荐阅读
- javascript - 单击表中的特定按钮
- oracle - 创建过程并在表中插入值
- android - Android Studio - 用户登录
- angularjs - 尝试在 Web API 和 Angular 中将数据表导出到 Excel(1.000.000 条记录),编写流式处理会引发内存不足异常
- amazon-web-services - 如何使用 boto3 删除 VPC 及其所有依赖项?
- control-m - 如何在 Control M 中为数据库作业/任务运行 pl/sql 语句(执行类型:- 嵌入式查询)
- reactjs - 道具改变时更新状态
- angular - 如何将 *ngFor 分成 4 个部分?在角度
- scala - 比较数据框列中存在的scala中的日期
- php - PHP用新结构对多维数组的内容进行分组