[解決済み] ngFor を使用して、Typescript Enum を文字列の配列として反復処理するにはどうすればよいですか?
2022-10-22 18:11:06
質問
Angular2とTypeScriptを使用しており、enumを持っています。
export enum Role {
ServiceAdmin, CompanyAdmin, Foreman, AgentForeman,
CrewMember, AgentCrewMember, Customer
}
enumを繰り返し処理するために*ngForを使用したいです。これを行うための最良の方法は何ですか?私はPipeを作成する必要がありますか?それとももっと簡単な方法があるのでしょうか?
どのように解決するのですか?
enumは単なるオブジェクトです。
enumはJavaScriptではこのように記述されます。
{
0: "ServiceAdmin",
1: "CompanyAdmin",
2: "Foreman",
3: "AgentForeman",
4: "CrewMember",
5: "AgentCrewMember",
6: "Customer",
ServiceAdmin: 0,
CompanyAdmin: 1,
Foreman: 2,
AgentForeman: 3,
CrewMember: 4,
AgentCrewMember: 5,
Customer: 6
}
つまり、このように反復することができるのです( plnkr ):
@Component({
...
template: `
<div *ngFor="let item of keys()">
{{ item }}
</div>
`
})
export class YourComponent {
role = Role;
keys() : Array<string> {
var keys = Object.keys(this.role);
return keys.slice(keys.length / 2);
}
}
または はカスタムパイプを作成するのがよいでしょう。 :
@Pipe({
name: 'enumToArray'
})
export class EnumToArrayPipe implements PipeTransform {
transform(data: Object) {
const keys = Object.keys(data);
return keys.slice(keys.length / 2);
}
}
更新
Typescript 2.4 では enum のメンバに以下のような文字列のイニシャライザを含めることができるようになりました。
enum Colors {
Red = "RED",
Green = "GREEN",
Blue = "BLUE",
}
この場合、単に
Object.keys(data);
をパイプから返します。
関連
-
[解決済み] BehaviorSubjectとObservableの違い?
-
[解決済み] オブジェクトのキーと値に*ngForでアクセスする
-
[解決済み] Angular CLI SASSオプション
-
[解決済み] Angular2 ngSwitchステートメントでtypescriptのenum値を使用する方法
-
[解決済み] angular2 のビューテンプレートで enum を渡す
-
[解決済み] Angular 4/5/6 グローバル変数
-
[解決済み] angular-cliのビルドでカスタムファイルをインクルードするには?
-
[解決済み] trackBy` と `ngFor` の使い方
-
[解決済み] 文字列|ヌル'型の引数は、文字列'型のパラメータに代入できません。タイプ 'null' はタイプ 'string' に割り当てられません。
-
[解決済み] angular-cli が HTTPS で ng serve するようにする。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Angular 2におけるEventEmitter.next()とEventEmitter.emit()の相違点
-
[解決済み] Angular 2: 反応するフォームコントロールの反復処理
-
[解決済み] 角度2 ngfor 最初、最後、インデックスループ
-
[解決済み] Angular 4+ ngOnDestroy() サービス中 - observableを破壊する
-
[解決済み] Angularでコンポーネントをリフレッシュする方法
-
[解決済み] ルーターナビゲートで同じページのngOnInitを呼び出さない
-
[解決済み] AngularでFormArrayからすべての項目を削除する
-
[解決済み] 新しいangularプロジェクトを作成する際に依存関係ツリーエラーを解決できない
-
[解決済み] Karma/Jasmineのテストで「[object ErrorEvent] thrown」エラーが発生した場合、どのようにデバッグすればよいですか?
-
[解決済み] FormGroupとFormArrayの使い分けは?