javascript - ¿Puede el bucle *for* de la plantilla de Angular recorrer un enum?
Estoy revisando este fragmento de código que es el modelo para un componente de filtro select para Todos:
export enum VISIBILITY_FILTER {
SHOW_COMPLETED = 'SHOW_COMPLETED',
SHOW_ACTIVE = 'SHOW_ACTIVE',
SHOW_ALL = 'SHOW_ALL'
}
export type TodoFilter = {
label: string;
value: VISIBILITY_FILTER;
};
export const initialFilters: TodoFilter[] = [
{ label: 'All', value: VISIBILITY_FILTER.SHOW_ALL },
{ label: 'Completed', value: VISIBILITY_FILTER.SHOW_COMPLETED },
{ label: 'Active', value: VISIBILITY_FILTER.SHOW_ACTIVE }
];
Parece como si todo eso pudiera ser reemplazado por:
export enum VISIBILITY_FILTER {
SHOW_COMPLETED = 'Completed',
SHOW_ACTIVE = 'Active',
SHOW_ALL = 'All'
}
Entonces la propiedad de filtro active simplemente sería tipada por el enum VISIBILITY_FILTER y recorreríamos el enum en la plantilla así (Código pseudo):
<option *ngFor="let filter of VISIBILITY_FILTER;" [ngValue]="filter">{{VISIBILITY_FILTER[VISIBILITY_FILTER.filter]}}
</option>
¿Eso parece razonable o me perdí de algo?
Respuesta #1
intentar :
public get visFilterValues() {
return Object.keys(VISIBILITY_FILTER).map(k => VISIBILITY_FILTER[k]);
}
y
<option *ngFor="let filter of visFilterValues" [ngValue]="filter">{{filter}}</option>
