ホームページ >ウェブフロントエンド >jsチュートリアル >Angular の「*ngClass」が「未定義のプロパティ 'remove' を読み取れません」エラーをスローするのはなぜですか?

Angular の「*ngClass」が「未定義のプロパティ 'remove' を読み取れません」エラーをスローするのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-13 12:20:26805ブラウズ

Why Does

Angular の *ngClass を使用した条件付きクラス

Angular には、条件付きで CSS クラスを HTML 要素に適用するためのさまざまなオプションが用意されています。一般的な方法の 1 つは、*ngClass ディレクティブを使用することです。ただし、正しく使用しないと、「未定義のプロパティ 'remove' を読み取れません」のようなエラーが発生する可能性があります。

問題:

以下の 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 によって提供される次のメソッド:

Type 1 つ目:

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

タイプ 2:

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

タイプ 3:

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

タイプ4:

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

複数のクラス条件の場合、タイプ 2 に示すようにオブジェクト表記を使用できます。 *ngClass の使用の詳細については、Angular ドキュメントを参照してください。

以上がAngular の「*ngClass」が「未定義のプロパティ 'remove' を読み取れません」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。