Mit String-Enums können Sie dies versuchen.
Meine String-Enumeration hat folgende Definition:
enum StatusEnum {
Published = <any> 'published',
Draft = <any> 'draft'
}
und übersetzt auf folgende Weise in js:
{
Published: "published",
published: "Published",
Draft: "draft",
draft: "Draft"
}
Ich habe einige davon in meinem Projekt, also habe ich eine kleine Hilfsfunktion in einer Shared Service Lib erstellt:
@Injectable()
export class UtilsService {
stringEnumToKeyValue(stringEnum) {
const keyValue = [];
const keys = Object.keys(stringEnum).filter((value, index) => {
return !(index % 2);
});
for (const k of keys) {
keyValue.push({key: k, value: stringEnum[k]});
}
return keyValue;
}
}
Init in Ihrem Komponentenkonstruktor und binden Sie es wie folgt an Ihre Vorlage:
In Komponente:
statusSelect;
constructor(private utils: UtilsService) {
this.statusSelect = this.utils.stringEnumToKeyValue(StatusEnum);
}
In Vorlage:
<option *ngFor="let status of statusSelect" [value]="status.value">
{{status.key}}
</option>
Vergessen Sie nicht, den UtilsService dem Provider-Array in Ihrer app.module.ts hinzuzufügen, damit Sie ihn problemlos in verschiedene Komponenten einfügen können.
Ich bin ein Typoskript-Neuling. Bitte korrigieren Sie mich, wenn ich falsch liege oder wenn es bessere Lösungen gibt.