Angular:带* ngClass的条件类

本文翻译自:Angular: conditional class with *ngClass

What is wrong with my Angular code? 我的Angular代码有什么问题? I am getting: 我正进入(状态:

Cannot read property 'remove' of undefined at BrowserDomAdapter.removeClass ...

HTML 的HTML

<ol class="breadcrumb">
    <li *ngClass="{active: step==='step1'}" (click)="step='step1; '">Step1</li>
    <li *ngClass="{active: step==='step2'}"  (click)="step='step2'">Step2</li>
    <li *ngClass="{active: step==='step3'}" (click)="step='step3'">Step3</li>
</ol>

#1楼

参考:https://stackoom.com/question/2Nz7j/Angular-带-ngClass的条件类


#2楼

[ngClass]=... instead of *ngClass . [ngClass]=...而不是*ngClass

* is only for the shorthand syntax for structural directives where you can for example use *仅用于结构指令的简写语法,您可以在其中使用

<div *ngFor="let item of items">{{item}}</div>

instead of the longer equivalent version 而不是更长的等效版本

<template ngFor let-item [ngForOf]="items">
  <div>{{item}}</div>
</template>

See also https://angular.io/docs/ts/latest/api/common/index/NgClass-directive.html 另请参阅https://angular.io/docs/ts/latest/api/common/index/NgClass-directive.html

 <some-element [ngClass]="'first second'">...</some-element> <some-element [ngClass]="['first', 'second']">...</some-element> <some-element [ngClass]="{'first': true, 'second': true, 'third': false}">...</some-element> <some-element [ngClass]="stringExp|arrayExp|objExp">...</some-element> <some-element [ngClass]="{'class1 class2 class3' : true}">...</some-element> 

See also https://angular.io/docs/ts/latest/guide/template-syntax.html 另请参阅https://angular.io/docs/ts/latest/guide/template-syntax.html

 <!-- toggle the "special" class on/off with a property --> <div [class.special]="isSpecial">The class binding is special</div> <!-- binding to `class.special` trumps the class attribute --> <div class="special" [class.special]="!isSpecial">This one is not so special</div> 
 <!-- reset/override all class names with a binding --> <div class="bad curly special" [class]="badCurly">Bad curly</div> 

#3楼

You should use something ( [ngClass] instead of *ngClass ) like that: 您应该使用类似以下内容( [ngClass]而不是*ngClass ):

<ol class="breadcrumb">
  <li [ngClass]="{active: step==='step1'}" (click)="step='step1; '">Step1</li>
  (...)


#4楼

Another solution would be using [class.active] . 另一种解决方案是使用[class.active]

Example : 范例:

<ol class="breadcrumb">
    <li [class.active]="step=='step1'" (click)="step='step1'">Step1</li>
</ol>

#5楼

Angular 2,..,7 provides several ways to add classes conditionally: Angular 2,..,7提供了几种有条件地添加类的方法:

type one 第一类

[class.my-class]="step=='step1'"

type two 第二类

[ngClass]="{'my-class': step=='step1'}"

and multiple option: 和多个选项:

[ngClass]="{'my-class': step=='step1', 'my-class2':step=='step2' }"

type three 第三类

[ngClass]="{1:'my-class1',2:'my-class2',3:'my-class4'}[step]"

type four 四类

[ngClass]="(step=='step1')?'my-class1':'my-class2'"

#6楼

That's the normal structure for ngClass is: ngClass的正常结构是:

[ngClass]="{'classname' : condition}"

So in your case, just use it like this... 因此,就您而言,就这样使用它...

<ol class="breadcrumb">
  <li [ngClass]="{'active': step==='step1'}" (click)="step='step1'">Step1</li>
  <li [ngClass]="{'active': step==='step2'}" (click)="step='step2'">Step2</li>
  <li [ngClass]="{'active': step==='step3'}" (click)="step='step3'">Step3</li>
</ol>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值