我的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]指令不相关,但我也得到了相同的错误

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

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

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

element: {type: string};

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

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

我得到了错误

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

解决办法就是把我的财产

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

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

其他回答

对于elseif语句(较少比较),使用如下语句:(例如,比较三个语句)

<div [ngClass]="step === 'step1' ? 'class1' : (step === 'step2' ? 'class2' : 'class3')"> {{step}} </div>

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

例子:

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

ngClass让:

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

你可以这样用:

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

扩展MostafaMashayekhi对选项二的答案> 你也可以用一个','连接多个选项

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

此外,*ngIf也可以在某些情况下使用,通常与*ngFor结合使用

class="mats p" *ngIf="mat=='painted'"

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

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

两者的效果是一样的!