Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

320
Visualizações
Angular: use tuberías en servicios y componentes

En AngularJS, puedo usar filtros (tuberías) dentro de servicios y controladores usando una sintaxis similar a esta:

 $filter('date')(myDate, 'yyyy-MM-dd');

¿Es posible usar tuberías en servicios/componentes como este en Angular?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Como es habitual en Angular, puede confiar en la inyección de dependencia:

 import { DatePipe } from '@angular/common'; class MyService { constructor(private datePipe: DatePipe) {} transformDate(date) { return this.datePipe.transform(date, 'yyyy-MM-dd'); } }

Agregue DatePipe a su lista de proveedores en su módulo; si olvida hacer esto, obtendrá un error no provider for DatePipe :

 providers: [DatePipe,...]

Actualizar Angular 6 : Angular 6 ahora ofrece prácticamente todas las funciones de formato utilizadas por las tuberías públicamente. Por ejemplo, ahora puede usar la función formatDate directamente.

 import { formatDate } from '@angular/common'; class MyService { constructor(@Inject(LOCALE_ID) private locale: string) {} transformDate(date) { return formatDate(date, 'yyyy-MM-dd', this.locale); } }

Antes de Angular 5 : tenga en cuenta que DatePipe dependía de la API Intl hasta la versión 5, que no es compatible con todos los navegadores (consulte la tabla de compatibilidad ).

Si está utilizando versiones anteriores de Angular, debe agregar el polyfill Intl a su proyecto para evitar cualquier problema. Consulte esta pregunta relacionada para obtener una respuesta más detallada.

over 4 years ago · Santiago Trujillo Relatório

0

Esta respuesta ahora está desactualizada.

recomiendo usar el enfoque DI de otras respuestas en lugar de este enfoque

Respuesta original:

Deberías poder usar la clase directamente.

 new DatePipe().transform(myDate, 'yyyy-MM-dd');

Por ejemplo

 var raw = new Date(2015, 1, 12); var formatted = new DatePipe().transform(raw, 'yyyy-MM-dd'); expect(formatted).toEqual('2015-02-12');
over 4 years ago · Santiago Trujillo Relatório

0

Sí, es posible mediante el uso de una tubería personalizada simple. La ventaja de usar una canalización personalizada es que si necesitamos actualizar el formato de fecha en el futuro, podemos ir y actualizar un solo archivo.

 import { Pipe, PipeTransform } from '@angular/core'; import { DatePipe } from '@angular/common'; @Pipe({ name: 'dateFormatPipe', }) export class dateFormatPipe implements PipeTransform { transform(value: string) { var datePipe = new DatePipe("en-US"); value = datePipe.transform(value, 'MMM-dd-yyyy'); return value; } } {{currentDate | dateFormatPipe }}

Siempre puede usar esta tubería en cualquier lugar, componente, servicios, etc.

Por ejemplo:

 export class AppComponent { currentDate : any; newDate : any; constructor(){ this.currentDate = new Date().getTime(); let dateFormatPipeFilter = new dateFormatPipe(); this.newDate = dateFormatPipeFilter.transform(this.currentDate); console.log(this.newDate); }

No te olvides de importar dependencias.

 import { Component } from '@angular/core'; import {dateFormatPipe} from './pipes'
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda