我的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>

当前回答

你可以使用[ngClass]或[class]。Classname],两者的工作方式相同。 [class.my-class] = " = = =步step1” 或

[ngClass] = "{“我班”:一步= =“步骤1”}”

两者的效果是一样的!

其他回答

你应该像这样使用一些东西([ngClass]而不是*ngClass):

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

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

在HTML中

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

在component.ts

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

    return classes;
  }

让,YourCondition是你的条件或布尔属性,然后像这样做

[class.yourClass]="YourCondition"

与[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>