Podemos usar enums em um modelo de visualização angular2?
<div class="Dropdown" dropdownType="instrument"></div>
passa a string como entrada:
enum DropdownType {
instrument,
account,
currency
}
@Component({
selector: '[.Dropdown]',
})
export class Dropdown {
@Input() public set dropdownType(value: any) {
console.log(value);
};
}
Mas como passar uma configuração de enum? Eu quero algo assim no modelo:
<div class="Dropdown" dropdownType="DropdownType.instrument"></div>
Qual seria a melhor prática?
Editado: Criado um exemplo:
import {bootstrap} from 'angular2/platform/browser';
import {Component, View, Input} from 'angular2/core';
export enum DropdownType {
instrument = 0,
account = 1,
currency = 2
}
@Component({selector: '[.Dropdown]',})
@View({template: ''})
export class Dropdown {
public dropdownTypes = DropdownType;
@Input() public set dropdownType(value: any) {console.log(`-- dropdownType: ${value}`);};
constructor() {console.log('-- Dropdown ready --');}
}
@Component({ selector: 'header' })
@View({ template: '<div class="Dropdown" dropdownType="dropdownTypes.instrument"> </div>', directives: [Dropdown] })
class Header {}
@Component({ selector: 'my-app' })
@View({ template: '<header></header>', directives: [Header] })
class Tester {}
bootstrap(Tester);
enums
angular
angular2-template
McLac
fonte
fonte
Respostas:
Crie uma propriedade para seu enum no componente pai de sua classe de componente e atribua o enum a ela e, em seguida, faça referência a essa propriedade em seu modelo.
Isso permite enumerar o enum conforme esperado em seu modelo.
fonte
dropdownType
, o modelo deve ter colchetes em ambas as extremidades (como[dropdownType]
:), uma vez que leva uma var e não um texto.Crie um enum
Crie seu componente, certifique-se de que sua lista enum terá o tipo de
Crie a sua vista
fonte
Se você deseja obter o nome Enum:
então em arquivo de componente
no modelo
fonte
Talvez você não precise fazer isso.
Por exemplo, em Numeric Enum:
No modelo HTML:
resultado:
dropdownType == DropdownType.account
ou String Enum:
resultado:
dropdownType == DropdownType.currency
Se você deseja obter o nome Enum:
fonte