Je veux Affichage de la date en utilisant le format européen dd/MM/yyyy
mais en utilisant DatePipe shortDate formatez afficher uniquement en utilisant le style de la date des États - Unis MM/dd/yyyy
.
Je suppose que la locale par défaut est en_US. Peut-être que je manque dans la documentation, mais comment puis-je modifier les paramètres régionaux par défaut dans une application Angular2? Ou peut-être existe-t-il un moyen de transmettre un format personnalisé à DatePipe?
138
Réponses:
À partir d'Angular2 RC6, vous pouvez définir les paramètres régionaux par défaut dans votre module d'application, en ajoutant un fournisseur:
Les tubes Devise / Date / Nombre doivent sélectionner les paramètres régionaux. LOCALE_ID est un OpaqueToken , à importer depuis angular / core.
Pour un cas d'utilisation plus avancé, vous souhaiterez peut-être récupérer les paramètres régionaux d'un service. Les paramètres régionaux seront résolus (une fois) lorsque le composant utilisant le tube de date est créé:
J'espère que ça marche pour toi.
la source
new CurrencyPipe('en-US');
. J'espère que cela sera utile pour quelque chose, car cela est apparu comme le premier résultat lors de la recherche de mon problème sur Google.La solution avec LOCALE_ID est idéale si vous souhaitez définir une fois la langue de votre application. Mais cela ne fonctionne pas, si vous souhaitez changer la langue pendant l'exécution. Dans ce cas, vous pouvez implémenter un canal de date personnalisé.
Maintenant, si vous changez la langue d'affichage de l'application à l'aide de TranslateService (voir ngx-translate )
les formats de votre application doivent être automatiquement mis à jour.
Exemple d'utilisation:
ou consultez mon projet "Notes" simple ici .
la source
Avec
angular5
la réponse ci-dessus ne fonctionne plus!Le code suivant:
app.module.ts
Conduit à l'erreur suivante:
Avec,
angular5
vous devez charger et enregistrer vous-même le fichier de paramètres régionaux utilisé.app.module.ts
Documentation
la source
registerLocaleData
c'était suffisant, eh bien ce n'est pas le cas.Si vous utilisez
TranslateService
from@ngx-translate/core
, vous trouverez ci-dessous une version sans créer de nouveau tube qui fonctionne avec la commutation dynamique à l'exécution (testé sur Angular 7). Utilisation de DatePipelocale
paramètre ( docs ):Tout d'abord, déclarez les paramètres régionaux que vous utilisez dans votre application, par exemple dans
app.component.ts
:Ensuite, utilisez votre pipe dynamiquement:
myComponent.component.html
myComponent.component.ts
la source
J'ai jeté un œil dans date_pipe.ts et il contient deux informations intéressantes. près du haut se trouvent les deux lignes suivantes:
Près du bas se trouve cette ligne:
Cela me suggère que le tube de date est actuellement codé en dur pour être «en-US».
Veuillez m'éclairer si je me trompe.
la source
Sur app.module.ts, ajoutez les importations suivantes. Il y a une liste d'options LOCALE ici .
Ajoutez ensuite le fournisseur
Utilisez des tuyaux en html. Voici la documentation angulaire pour cela.
la source
Vous faites quelque chose comme ça:
{{ dateObj | date:'shortDate' }}
ou
{{ dateObj | date:'ddmmy' }}
Voir: https://angular.io/docs/ts/latest/api/common/index/DatePipe-pipe.html
la source
Je luttais avec le même problème et je n'ai pas travaillé pour moi en utilisant ceci
Donc, j'ai essayé une solution de contournement, pas la meilleure solution mais cela a fonctionné:
Je peux toujours créer un tuyau personnalisé.
la source
Pour ceux qui ont des problèmes avec AOT, vous devez le faire un peu différemment avec une useFactory:
la source
{ provide: LOCALE_ID, useFactory: () => 'fr-CA'}
a fait l'affaire pour moi;)Copié le tube google a changé les paramètres régionaux et cela fonctionne pour mon pays, il est possible qu'ils ne l'aient pas terminé pour tous les paramètres régionaux. Ci-dessous le code.
la source
Ok, je propose cette solution, très simple, utilisant
ngx-translate
la source
C'est peut-être un peu tard, mais dans mon cas (angulaire 6), j'ai créé un simple tuyau au-dessus de DatePipe, quelque chose comme ceci:
Peut-être pas la meilleure solution, mais simple et fonctionne.
la source