ngClass中的多个条件 - Angular 4

时间:2017-06-29 09:54:03

标签: angular

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

<section [ngClass]="[menu1 ? 'class1' : '' || menu2 ? 'class1' : '' || (something && (menu1 || menu2)) ? 'class2' : '']">
像这样的事情。我为2个菜单上了同一个班级,当其中一个菜单是真的时,我需要上课,而且“#39;是真的。希望我解释得很好

8 个答案:

答案 0 :(得分:39)

您正在尝试将数组分配给ngClass,但数组元素的语法是错误的,因为您使用 int cores = Runtime.getRuntime().availableProcessors(); ExecutorService executorService = Executors.newFixedThreadPool(cores); 而不是||分隔它们。

试试这个:

,

这也应该有效:

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

答案 1 :(得分:17)

你需要对象表示法

<section [ngClass]="{'class1':condition1, 'class2': condition2, 'class3':condition3}" > 

参考:https://angular.io/api/common/NgClass

答案 2 :(得分:5)

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

For Instance;

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>

答案 3 :(得分:1)

<section [ngClass]="{'class1':expression1, 'class2': expression2, 
'class3':expression3}">

不要忘记在班级名称周围添加单引号。

答案 4 :(得分:0)

我有类似的问题。我想在查看多个表达式后设置一个类。 ngClass可以评估组件代码中的方法并告诉您该怎么做。

所以在* ngFor:

<div [ngClass]="{'shrink': shouldShrink(a.category1, a.category2), 'showAll': section == 'allwork' }">{{a.listing}}</div>

在组件内部:

section = 'allwork';

shouldShrink(cat1, cat2) {
    return this.section === cat1 || this.section === cat2 ? false : true;
}

在这里,我需要计算我是否应根据2个不同的类别是否与所选类别匹配来缩小div。它有效。 因此,根据您输入的方法返回的内容,您可以根据那里计算[ngClass]的真/假。

答案 5 :(得分:0)

<a [ngClass]="{'class1':array.status === 'active','class2':array.status === 'idle','class3':array.status === 'inactive',}">

答案 6 :(得分:0)

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

示例 1:

<section
    [class.class1]="menu1"
    [class.class2]="menu2"
    [class.class3]="menu3">
    </section>

示例 2:

   <section
    [class.class1]="age > 20"
    [class.class2]="age < 50"
    [class.class3]="age == 4">
    </section>

答案 7 :(得分:-1)

我希望这是基本的条件类之一

解决方案:1

<section [ngClass]="(condition)? 'class1 class2 ... classN' : 'another class1 ... classN' ">

解决方案2

<section [ngClass]="(condition)? 'class1 class2 ... classN' : '(condition)? 'class1 class2 ... classN':'another class' ">