Sélectionnez en fonction de la enum dans Angular2
J'ai cette enum (je suis en utilisant Tapuscrit) :
export enum CountryCodeEnum {
France = 1,
Belgium = 2
}
Je voudrais construire un sélectionnez dans mon forme, avec pour chaque option l'enum valeur entière de la valeur, et l'enum texte de l'étiquette, comme ceci :
<select>
<option value="1">France</option>
<option value="2">Belgium</option>
</select>
Comment puis-je faire cela ?
Vous devez vous connecter pour publier un commentaire.
mise à jour
au lieu de
pipes: [KeysPipe]
utilisation
original
À l'aide de la
keys
tuyau de https://stackoverflow.com/a/35536052/217408J'ai dû modifier la pipe un peu pour le faire fonctionner correctement avec les énumérations
(voir aussi Comment obtenir les noms de fichier d'enregistrement enum entrées?)
Plunker
Voir aussi Comment l'utiliser *ngFor avec l'Objet?
La solution si vous ne voulez pas créer un nouveau tuyau. Vous pouvez aussi extraire les clés dans la propriété d'assistance et de l'utiliser:
Démo: http://plnkr.co/edit/CMFt6Zl7lLYgnHoKKa4E?p=preview
<option *ngFor="#key of keys" [value]="key">{{countries[key]}}</option>
.map(Number)
pour obtenir unnumber[]
dos. C'est pour éviter tous les problèmes autour de la liaison d'une propriété à l'key
et attend unenumber
(plutôt que d'unstring
) de retour dans votre composant.Voici une manière très simple pour Angular2 v2.0.0. Par souci d'exhaustivité, j'ai inclus un exemple de définition d'une valeur par défaut de la
country
sélectionnez via formes réactives.J'ai préféré avoir une simple fonction d'utilité partagé sur mon Angulaire de l'Application, pour convertir le
enum
dans une série de construire sélectionne:pour remplir une variable dans le Composant avec:
puis de compléter mon Matériel, Sélectionnez comme mon ancien tableau à base de:
Merci pour ce fil!
export enum CountryCodeEnum { France = '1', Belgium = '2' }
Une autre solution similaire, qui n'omettez pas d' "0" (comme "Annuler"). Utilisation du filtre(Nombre) à mon humble avis n'est pas une bonne approche.
Comme Angulaire 6.1 et ci-dessus, vous pouvez utiliser le haut-
KeyValuePipe
comme ci-dessous (collé à partir angulaire.io docs).Je suis en supposant qu'un enum contient conviviale lisible des chaînes, bien sûr 🙂
JS:
Avec de la ficelle les énumérations, vous pouvez essayer cette.
Ma chaîne enum a la définition suivante:
et se traduit par js de la manière suivante:
J'ai un peu de ces dans mon projet petites fonction d'assistance dans un service partagé lib:
Init dans votre composant constructeur et le Lier à votre modèle comme celui-ci:
En composant:
Modèle:
N'oubliez pas d'ajouter le UtilsService pour le fournisseur de tableau dans votre application.le module.ts de sorte que vous pouvez facilement l'injecter dans les différentes composantes.
Je suis un tapuscrit newbie, donc s'il vous plaît corrigez-moi si je me trompe ou si il y a de meilleures solutions.
Un autre spin-off de cette réponse, mais ce fait les cartes des valeurs que les chiffres, au lieu de les convertir en chaînes qui est un bug. Il travaille également avec de 0 basée sur les enums
C'est la meilleure option que vous pouvez appliquer sans tuyaux ou de code supplémentaire.