我的Angular代码出了什么问题?我得到以下错误:

无法读取BrowserDomAdapter.removeClass中未定义的属性“remove”

<ol>
  <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>

当前回答

Angular提供了多种有条件地添加类的方法:

第一个方法

Active是您的类名

[class.active]="step === 'step1'"

第二种方式

Active是您的类名

[ngClass]="{'active': step=='step1'}"

第三条道路

通过使用三元运算符class1和class2是你的类名

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

其他回答

在下面的例子中,你可以使用IF ELSE

<p class="{{condition ? 'checkedClass' : 'uncheckedClass'}}">
<p [ngClass]="condition ? 'checkedClass' : 'uncheckedClass'">
<p [ngClass]="[condition ? 'checkedClass' : 'uncheckedClass']">

与[ngClass]指令不相关,但我也得到了相同的错误

无法读取未定义的属性“移除”

和我认为是错误在我的[ngClass]条件,但它原来是我试图访问的[ngClass]条件的属性没有初始化。

就像我的打字文件里有这个

element: {type: string};

和在我的[ngClass]我正在使用

[ngClass]="{'active', element.type === 'active'}"

我得到了错误

无法读取未定义的属性“类型”

解决办法就是把我的财产

element: {type: string} = {type: 'active'};

希望它能帮助那些试图匹配[ngClass]中属性条件的人

另一个解决方案是使用[class.active]。

例子:

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

[ngClass] =…而不是*ngClass。

*仅用于结构型指令的简写语法,例如可以使用

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

而不是较长的同等版本

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

参见https://angular.io/docs/ts/latest/api/common/index/NgClass-directive.html

<some-element [ngClass]="'first second'"> <某个元素[ngClass] = "(“第一次”,“二”)" >…< /某个元素> <某个元素[ngClass] = "{“第一”:真的,“二”:真的,“第三”:假}" >…< /某个元素> <某个元素[ngClass] = " stringExp | arrayExp | objExp " >…< /某个元素> <some-element [ngClass]="{'class1 class2 class3': true}">

参见https://angular.io/docs/ts/latest/guide/template-syntax.html

<!——用属性>开启/关闭“特殊”类 < div[类。</div> . special]="isSpecial">类绑定是特殊的 <!——绑定到class。Special '胜过类属性——> < div class = "特殊的“ [class.special] = " !isSpecial">这个没有那么特别</div>

<!——用绑定重置/覆盖所有类名——> .使用实例 <div class="bad curly special" (类)= " badCurly " >坏花< / div >

此外,您可以添加与方法函数:

在HTML中

<div [ngClass]="setClasses()">...</div>

在component.ts

// Set Dynamic Classes
  setClasses() {
    let classes = {
      constantClass: true,
      'conditional-class': this.item.id === 1
    }

    return classes;
  }