[解決済み] Angular2 ngSwitchステートメントでtypescriptのenum値を使用する方法
2022-04-14 02:20:42
質問
TypescriptのenumはAngular2のngSwitchディレクティブと自然にマッチしているように見えますが、実際はどうなのでしょうか? しかし、コンポーネントのテンプレートでenumを使おうとすると、 "Cannot read property 'xxx' of undefined in ..."と表示されるのです。 どうすれば、コンポーネント・テンプレートでenum値を使用できますか?
これは、enum のすべての値に基づいて html の選択オプションを作成する方法 (ngFor) とは異なることに注意してください。 この質問は、enumの特定の値に基づくngSwitchに関するものです。 enumへのクラス内部参照を作成する同じアプローチが表示されますが。
どのように解決するのですか?
コンポーネントクラスでenumへの参照を作成し(頭文字を小文字に変えただけ)、その参照をテンプレートから利用することができます( プランカー ):
import {Component} from 'angular2/core';
enum CellType {Text, Placeholder}
class Cell {
constructor(public text: string, public type: CellType) {}
}
@Component({
selector: 'my-app',
template: `
<div [ngSwitch]="cell.type">
<div *ngSwitchCase="cellType.Text">
{{cell.text}}
</div>
<div *ngSwitchCase="cellType.Placeholder">
Placeholder
</div>
</div>
<button (click)="setType(cellType.Text)">Text</button>
<button (click)="setType(cellType.Placeholder)">Placeholder</button>
`,
})
export default class AppComponent {
// Store a reference to the enum
cellType = CellType;
public cell: Cell;
constructor() {
this.cell = new Cell("Hello", CellType.Text)
}
setType(type: CellType) {
this.cell.type = type;
}
}
関連
-
[解決済み] TypeScriptでenumに値が存在するかどうかを確認する
-
[解決済み] TypeScriptでグローバル変数を作成する
-
[解決済み] メインとテストのコンパイルを分離するために、typescriptコンパイラ(tsc)のオプションはどのように設定するのが正しいのでしょうか?
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] NGIf else "の使い方を教えてください。
-
[解決済み] TypeScriptでオブジェクトに動的にプロパティを割り当てるには?
-
[解決済み] TypeScriptで文字列をenumに変換するには?
-
[解決済み] Typescript オブジェクトのインデックス付きメンバの型を強制する?
-
[解決済み】angular2 + typescriptアプリケーションにlodashをインポートする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Typescript : require文はimport文の一部ではない
-
[解決済み】tsconfigファイルにおけるesModuleInteropの理解
-
[解決済み】Typescript: スプレッド型はオブジェクト型からしか作成できない
-
[解決済み] TypeScriptの非同期関数でプロミスを返す
-
[解決済み] クラス定数を実装するには?
-
[解決済み] TypeScriptで文字列をenumに変換するには?
-
[解決済み] AngularでNameServiceのプロバイダがない
-
[解決済み】TypeScriptで型をnullableとして宣言する方法は?
-
[解決済み】引数として渡されたTypeScriptオブジェクトにデフォルト値を設定する
-
[解決済み] angular2 のビューテンプレートで enum を渡す