Tengo esta enumeración:
export enum LogLevel { DEBUG = 'DEBUG', INFO = 'INFO', WARNING = 'WARNING', ERROR = 'ERROR' }Me gustaría crear una selección en mi formulario, con para cada opción el texto enumerado como etiqueta:
<select> <option value="DEBUG">DEBUG</option> <option value="INFO">INFO</option> <option value="INFO">INFO</option> <option value="INFO">INFO</option> </select>¿Cuál es una forma correcta de hacer esto?
Intente usar Object.values para convertir la enumeración en una matriz:
<select> <option *ngFor="let logValue of Object.values(LogLevel)" [ngValue]="logValue">{{}logValue}</option> </select>aquí hay una solución simple
1. content of app.component.ts: export class AppComponent { keys = Object.keys; logLevel = LogLevel; selected = LogLevel.DEBUG; select(event: any) { const value = event.target.value; this.selected = value; console.log(this.selected); } } export enum LogLevel { DEBUG = 'DEBUG', INFO = 'INFO', WARNING = 'WARNING', ERROR = 'ERROR', } 2. content of app.component.html <select [(ngModel)]="selected" (change)="select($event)"> <option *ngFor="let log of keys(logLevel)" [value]="logLevel[log]"> {{ log }} </option> </select>para obtener más información, consulte este enlace https://stackblitz.com/edit/angular-ivy-cuhnbw