javascript - Få pipe til å oppdatere seg selv i Angular


Jeg har et statisk tidsstempel fra backend, og jeg vil oppdatere pipen hvert sekund for å få tidspunktet fra nå, og dette er pipen min

    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');
  }

}

i dette tilfellet konverterer det bare tidsstempelet til dette formatet, jeg vil holde datoen oppdatert, hvordan kan jeg gjøre dette?

Svar #1

Du bør returnere en observable og bruke asyncPipe også.

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') }));
  }

}

Og du bør bruke det slik: {{ 'param' | dateFormat | async}}

Svar #2

Jeg tror du bare må oppdatere tiden som går inn i røret hvert sekund?

Liker

currentTime$ = Observable.interval(1000).pipe(map(() => { return new Date() } ))

Relaterte artikler