1. ホーム
  2. javascript

[解決済み] Angular2のngIfで変数の型を確認する方法

2023-05-28 08:26:50

質問

Angular2を勉強しています。私はオブジェクトである変数を持つコンポーネントを持っています。 私はオブジェクトのフィールドを反復しており、その位置のデータの種類に応じて、私は別のコンポーネントをレンダリングする必要があります。 この場合、レンダリングしたいのは label をレンダリングしたい。 typeof であれば、その位置は number となっていますが、これはうまくいきません。

<div>
  <div *ngIf='obj'>
    <label *ngFor="let key of keys; let i = index">
      <label class='key'>{{key}}:</label>
      <label class='number' *ngIf='typeof obj[key] === "number"'>
      <!-- label class='number' *ngIf='obj[key] | typeof === "number"' -->
        {{ obj[key] }}
      </label>
    </label>
  </div>
</div>

何かアイデアはありますか?

また、パイプを作成して typeof を取得するためのパイプも作成しましたが、これは値を表示するときには機能しますが、*ngIfの内部では機能しません。

どのように解決するのですか?

のようなグローバルは window , typeof や列挙型、静的メソッドは、テンプレート内では使用できません。コンポーネントクラスのメンバとタイプスクリプト言語の構成要素のみが利用可能です。

のようなヘルパーメソッドをコンポーネントに追加することができます。

isNumber(val): boolean { return typeof val === 'number'; }

のような使い方をします。

<label class='number' *ngIf='isNumber(obj[key])'>