Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

322
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda