Quero exibir a Data usando o formato europeu, dd/MM/yyyy
mas usando o formato DatePipe shortDate , ele é exibido apenas no estilo de data dos EUA MM/dd/yyyy
.
Estou assumindo que é a localidade padrão é en_US. Talvez esteja faltando nos documentos, mas como posso alterar as configurações padrão de localidade em um aplicativo Angular2? Ou talvez haja alguma maneira de passar um formato personalizado para o DatePipe?
javascript
angular
date-pipe
nsbm
fonte
fonte
Respostas:
No Angular2 RC6, você pode definir a localidade padrão no módulo do aplicativo, adicionando um provedor:
Os canais de Moeda / Data / Número devem selecionar o código do idioma. LOCALE_ID é um OpaqueToken , a ser importado do angular / core.
Para um caso de uso mais avançado, convém escolher a localidade de um serviço. A localidade será resolvida (uma vez) quando o componente usando o canal de datas for criado:
Espero que funcione para você.
fonte
new CurrencyPipe('en-US');
. Esperemos que isso seja útil para algo que apareceu como o primeiro resultado ao pesquisar meu problema no Google.A solução com LOCALE_ID é ótima se você deseja definir o idioma do seu aplicativo uma vez. Mas não funciona, se você deseja alterar o idioma durante o tempo de execução. Nesse caso, você pode implementar um canal de data personalizado.
Agora, se você alterar o idioma de exibição do aplicativo usando o TranslateService (consulte ngx-translate )
os formatos no seu aplicativo devem ser atualizados automaticamente.
Exemplo de uso:
ou verifique meu projeto "Notes" simples aqui .
fonte
Com
angular5
a resposta acima, não funciona mais!O código a seguir:
app.module.ts
Leva ao seguinte erro:
Com
angular5
você, você deve carregar e registrar o arquivo de localidade usado por conta própria.app.module.ts
Documentação
fonte
registerLocaleData
era suficiente, bem, não é.Se você usar
TranslateService
from@ngx-translate/core
, a seguir há uma versão sem criar um novo canal que funcione com a comutação dinâmica no tempo de execução (testado no Angular 7). Usando olocale
parâmetro DatePipe ( docs ):Primeiro, declare os códigos de idioma que você usa no seu aplicativo, por exemplo
app.component.ts
:Em seguida, use seu pipe dinamicamente:
myComponent.component.html
myComponent.component.ts
fonte
Eu dei uma olhada no date_pipe.ts e ele tem dois bits de informação que são de interesse. próximo ao topo estão as duas linhas a seguir:
Perto da parte inferior está esta linha:
Isso sugere para mim que o canal de data está atualmente codificado para ser 'en-US'.
Por favor, me esclareça se estou errado.
fonte
Em app.module.ts, adicione as seguintes importações. Há uma lista de opções LOCALE aqui .
Em seguida, adicione o provedor
Use tubos em html. Aqui está a documentação angular para isso.
fonte
Você faz algo assim:
{{ dateObj | date:'shortDate' }}
ou
{{ dateObj | date:'ddmmy' }}
Consulte: https://angular.io/docs/ts/latest/api/common/index/DatePipe-pipe.html
fonte
Eu estava lutando com o mesmo problema e não funcionou para mim usando este
Então, tentei uma solução alternativa, não a melhor solução, mas funcionou:
Sempre posso criar um pipe personalizado.
fonte
Para aqueles que têm problemas com o AOT, é necessário fazê-lo de maneira um pouco diferente com o useFactory:
fonte
{ provide: LOCALE_ID, useFactory: () => 'fr-CA'}
fiz o truque para mim;)Copiado o tubo do Google mudou o código de idioma e funciona para o meu país; é possível que eles não o concluam em todos os códigos de idioma. Abaixo está o código.
fonte
Ok, eu proponho esta solução, muito simples, usando
ngx-translate
fonte
Pode ser um pouco tarde, mas no meu caso (angular 6), criei um pipe simples no topo do DatePipe, algo como isto:
Pode não ser a melhor solução, mas simples e funciona.
fonte