Pouvons-nous utiliser des énumérations dans un modèle de vue angular2?
<div class="Dropdown" dropdownType="instrument"></div>
passe la chaîne en entrée:
enum DropdownType {
instrument,
account,
currency
}
@Component({
selector: '[.Dropdown]',
})
export class Dropdown {
@Input() public set dropdownType(value: any) {
console.log(value);
};
}
Mais comment passer une configuration enum? Je veux quelque chose comme ça dans le modèle:
<div class="Dropdown" dropdownType="DropdownType.instrument"></div>
Quelle serait la meilleure pratique?
Modifié: création d'un exemple:
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);
Réponses:
Créez une propriété pour votre énumération sur le composant parent de votre classe de composant et affectez-lui l'énumération, puis référencez cette propriété dans votre modèle.
Cela vous permet d'énumérer l'énumération comme prévu dans votre modèle.
la source
dropdownType
le modèle devrait avoir des crochets aux deux extrémités (comme ceci:)[dropdownType]
car il prend une variable et non du texte.Créer une énumération
Créez votre composant, assurez-vous que votre liste d'énumérations aura le type
Créez votre vue
la source
Si vous voulez obtenir le nom Enum:
puis dans le fichier du composant
dans le modèle
la source
Peut-être que vous n'êtes pas obligé de faire ça.
Par exemple, dans Numeric Enum:
Dans le modèle HTML:
résultat:
dropdownType == DropdownType.account
ou String Enum:
résultat:
dropdownType == DropdownType.currency
Si vous voulez obtenir le nom Enum:
la source