ngClass中的多个条件 - Angular 4

Nem*_*a G 32 angular

如何为ngClass使用多个条件?例:

<section [ngClass]="[menu1 ? 'class1' : '' || menu2 ? 'class1' : '' || (something && (menu1 || menu2)) ? 'class2' : '']">
Run Code Online (Sandbox Code Playgroud)

这样的事情.我有2个菜单的同一个班级,当其中一个菜单是真的并且'某事'是真的时我需要上课.希望我解释得很好

Mat*_*247 58

您正在尝试将数组分配给ngClass,但数组元素的语法是错误的,因为您使用||而不是a 分隔它们,.

试试这个:

<section [ngClass]="[menu1 ? 'class1' : '',  menu2 ? 'class1' : '', (something && (menu1 || menu2)) ? 'class2' : '']">
Run Code Online (Sandbox Code Playgroud)

这应该也有效:

<section [ngClass.class1]="menu1 || menu2" [ngClass.class2] = "(menu1 || menu2) && something">    
Run Code Online (Sandbox Code Playgroud)

  • 第二种方法到目前为止在角度5中不起作用 (7认同)

dee*_* zg 26

你需要对象表示法

<section [ngClass]="{'class1':condition1, 'class2': condition2, 'class3':condition3}" > 
Run Code Online (Sandbox Code Playgroud)

ref:https://angular.io/api/common/NgClass


小智 12

<a [ngClass]="{'class1':array.status === 'active','class2':array.status === 'idle','class3':array.status === 'inactive',}">
Run Code Online (Sandbox Code Playgroud)


Gen*_*sGo 11

<section [ngClass]="{'class1': expression1, 'class2': expression2, 
'class3': expression3}">
Run Code Online (Sandbox Code Playgroud)

不要忘记在类名周围添加单引号。


xde*_*akv 8

有多种方法可以编写相同的逻辑.如前所述,您可以使用对象表示法或简单表达式.但是,我认为你在HTML中不应该那么多逻辑.很难测试和发现问题.您可以使用getter函数来分配类.

例如;

public getCustomCss() {
    //Logic here;
    if(this.x == this.y){
        return 'class1'
    }
    if(this.x == this.z){
        return 'class2'
    }
}
<!-- HTML -->
<div [ngClass]="getCustomCss()"> Some prop</div>

//OR

get customCss() {
    //Logic here;
    if(this.x == this.y){
        return 'class1'
    }
    if(this.x == this.z){
        return 'class2'
    }
}
<!-- HTML -->
<div [ngClass]="customCss"> Some prop</div>
Run Code Online (Sandbox Code Playgroud)


Hoq*_*dul 8

您可以使用特定的类而不是使用[ngClass] 。请注意,在第二个示例中,我使用了年龄变量作为补偿​​目的。

示例1:

<section
    [class.class1]="menu1"
    [class.class2]="menu2"
    [class.class3]="menu3">
    </section>
Run Code Online (Sandbox Code Playgroud)

示例2:

   <section
    [class.class1]="age > 20"
    [class.class2]="age < 50"
    [class.class3]="age == 4">
    </section>
Run Code Online (Sandbox Code Playgroud)