首頁 >web前端 >js教程 >為什麼 Angular 中的'*ngClass”會拋出'無法讀取未定義的屬性'刪除'”錯誤?

為什麼 Angular 中的'*ngClass”會拋出'無法讀取未定義的屬性'刪除'”錯誤?

Linda Hamilton
Linda Hamilton原創
2024-12-13 12:20:26808瀏覽

Why Does

Angular 中帶有*ngClass 的條件類別

Angular 提供了各種選項來有條件地將CSS 類別應用到HTML 元素。常見的方法是使用 *ngClass 指令。但是,如果使用不當,可能會導致錯誤,例如「無法讀取未定義的屬性『刪除』。」

問題:

鑑於下面的 Angular程式碼,為什麼會出現以下錯誤發生:

Cannot read property 'remove' of undefined at BrowserDomAdapter.removeClass
<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 版本2 中使用帶有條件表達式的ngClass 指令而發生錯誤。在 Angular 2 中, ngClass 指令接受一個物件作為參數,其中鍵代表 CSS 類別名稱,值代表布林表達式。

要解決此問題,請將 *ngClass 指令替換為以下任意值Angular提供了以下方法:

類型一:

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

二類:

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

二類:

[ngClass]="{1: 'active', 2: 'step2', 3: 'step3'}[step]"
二類:

二類:
[ngClass]="step === 'step1' ? 'active' : 'inactive'"

二類:二類:二類:二類:第二個>三類: 類型四:對於多類條件,您可以使用物件表示法,如類型二所示。有關使用 *ngClass 的更多詳細信息,請參閱 Angular 文件。

以上是為什麼 Angular 中的'*ngClass”會拋出'無法讀取未定義的屬性'刪除'”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn