Tengo una marca de tiempo estática del backend y quiero actualizar la tubería cada 1 segundo para obtener la fecha a partir de ahora y esta es mi tubería
import { Pipe, PipeTransform } from '@angular/core'; import moment from 'moment'; @Pipe({ name: 'dateFormat' }) export class DateFormatPipe implements PipeTransform { transform(date: string): string { return moment.utc(date, 'X').local().format('DD-MM-YYYY h:mm:ss a'); } }en este caso, solo convierte la marca de tiempo a este formato, quiero mantener la fecha actualizada, ¿cómo puedo hacer esto?
Debe devolver un observable y usar asyncPipe también.
import { Pipe, PipeTransform } from '@angular/core'; import * as moment from 'moment'; import { interval, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; @Pipe({ name: 'dateFormat' }) export class DateFormatPipe implements PipeTransform { transform(date: string): Observable<string> { return interval(1000).pipe(map(() => { return moment().format('DD-MM-YYYY h:mm:ss a') })); } } Y deberías usarlo como: {{ 'param' | dateFormat | async}}
Creo que solo tienes que actualizar el tiempo que se pasa a la tubería cada segundo.
Me gusta
currentTime$ = Observable.interval(1000).pipe(map(() => { return new Date() } ))