Angular 2 ngClass 在检查条件时不评估我的表达式
Angular 2 ngClass not evaluating my expression when checking against condition
我在 Angular 2 中有一个名为 selectedState 的表达式。该表达式的计算结果为 const 内部的五个属性之一。根据单击的内容,它会更改 class 名称。
<button
class="button button--secondary"
[ngClass]="selectedState">
<div class="u-maxX u-centerX">
<span>Button</span>
</div>
</div>
</button>
"selectedState" 将 return 单击哪个项目; default、is-hovering、is-active、disabled 和 loading。
例如如果我点击悬停,它将 return
`<button
class="button button--secondary is-hovering">
<div class="u-maxX u-centerX">
<span>Button</span>
</div>
</div>
</button>`
现在当我像这样更改语法时。
<button
class="button button--primary"
[ngClass]="{selectedState: type === 'primary'}">
<div class="u-maxX u-centerX">
<span>Button</span>
</div>
</button>
现在 "selectedState" 计算字符串 "selectedState" 而不是像以前那样动态变化。如何在检查类型 === 'primary' 时保持动态行为?我需要检查类型,因为页面上有几种类型。我需要每种类型只影响一个按钮,否则它会影响页面上的所有按钮。
您应该在模板中保留尽可能多的逻辑,因此要么绑定 [ngClass]="someVariable"
并通过调用函数改变该变量,要么绑定 [ngClass]="someFunction()"
并拥有该函数 return基于某些条件的适当 class 名称。
例如,有一个按钮调用了setIsHovering函数,另一个按钮调用了setIsActive函数等,然后定义这些函数:
setIsActive() {
this.selectedState = "isActive";
}
setIsHovering() {
this.selectedState = "isHovering";
}
并将 ngClass 定义为:
[ngClass]="selectedState"
或者,定义一个 selectedState 函数:
selectedState() {
if(this.isHoveringStateVariable == true) {
this.selectedState = "isHovering";
} else if (this.isActiveStateVariable == true) {
this.selectedState = "isActive";
}
}
并将 ngClass 定义为:
[ngClass]="selectedState()"
显然用任何适合确定实际当前状态的逻辑替换 this.isHoveringStateVariable。
我在 Angular 2 中有一个名为 selectedState 的表达式。该表达式的计算结果为 const 内部的五个属性之一。根据单击的内容,它会更改 class 名称。
<button
class="button button--secondary"
[ngClass]="selectedState">
<div class="u-maxX u-centerX">
<span>Button</span>
</div>
</div>
</button>
"selectedState" 将 return 单击哪个项目; default、is-hovering、is-active、disabled 和 loading。
例如如果我点击悬停,它将 return
`<button
class="button button--secondary is-hovering">
<div class="u-maxX u-centerX">
<span>Button</span>
</div>
</div>
</button>`
现在当我像这样更改语法时。
<button
class="button button--primary"
[ngClass]="{selectedState: type === 'primary'}">
<div class="u-maxX u-centerX">
<span>Button</span>
</div>
</button>
现在 "selectedState" 计算字符串 "selectedState" 而不是像以前那样动态变化。如何在检查类型 === 'primary' 时保持动态行为?我需要检查类型,因为页面上有几种类型。我需要每种类型只影响一个按钮,否则它会影响页面上的所有按钮。
您应该在模板中保留尽可能多的逻辑,因此要么绑定 [ngClass]="someVariable"
并通过调用函数改变该变量,要么绑定 [ngClass]="someFunction()"
并拥有该函数 return基于某些条件的适当 class 名称。
例如,有一个按钮调用了setIsHovering函数,另一个按钮调用了setIsActive函数等,然后定义这些函数:
setIsActive() {
this.selectedState = "isActive";
}
setIsHovering() {
this.selectedState = "isHovering";
}
并将 ngClass 定义为:
[ngClass]="selectedState"
或者,定义一个 selectedState 函数:
selectedState() {
if(this.isHoveringStateVariable == true) {
this.selectedState = "isHovering";
} else if (this.isActiveStateVariable == true) {
this.selectedState = "isActive";
}
}
并将 ngClass 定义为:
[ngClass]="selectedState()"
显然用任何适合确定实际当前状态的逻辑替换 this.isHoveringStateVariable。