Tengo un componente secundario que toma el tipo como entrada.
componente hijo:
export enum PersonTypes { MALE = 'male', FEMALE = 'female' } @Component({ selector: 'app-child' }) export class ChildComponent { @Input() type: PersonTypes; }Componente principal:
@Component({ selector: 'app-parent' }) export class ParentComponent { }En la plantilla de vista del componente principal:
<div> <app-child [type]="PersonTypes.MALE"></app-child> <app-child [type]="PersonTypes.FEMALE"></app-child> </div>Entonces, la pregunta es ¿cómo pasar los diferentes valores de enumeración en la plantilla? Encontré una respuesta que dice que necesitamos crear una nueva variable en el componente principal y luego asignar ese valor a "escribir" en la plantilla como se muestra a continuación.
@Component({ selector: 'app-parent', template:` <div> <app-child [type]="malePerson"></app-child> <app-child [type]="femalePerson"></app-child> </div> ` }) export class ParentComponent { malePerson = PersonTypes.MALE; femalePerson = PersonTypes.FEMALE; }para mí es una solución superada, ¿qué pasa si tenemos 10 propiedades de enumeración, terminamos creando 10 variables locales y asignarlas en la plantilla es demasiado?
¿Alguna solución mejor para esto?
Para usar Enum en la plantilla solo tiene que asignar directamente el Enum a una variable.
@Component({ selector: 'app-parent' }) export class ParentComponent { public PersonTypesEnum = PersonTypes; // direct reference }Ahora PersonTypesEnum se puede usar en una plantilla
<div> <app-child [type]="PersonTypesEnum.MALE"></app-child> <app-child [type]="PersonTypesEnum.FEMALE"></app-child> </div>