Мне нужно переопределить форматы конвейера даты Angular 7 по умолчанию (medium
, short
, fullDate
и т. Д.), Потому что я не хочу использовать два конвейера даты (по умолчанию и пользовательский) ), поэтому я сделал следующее, и мне было интересно, хорошая идея сделать это так:
// extend-date.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';
@Pipe({
name: 'date'
})
export class ExtendDatePipe extends DatePipe implements PipeTransform {
constructor() {
super('en-US');
this.customDateFormats = {
medium: '...',
short: '...',
fullDate: '...',
longDate: '...',
mediumDate: '...',
shortDate: '...',
mediumTime: '...',
shortTime: '...'
};
}
transform(value: any, args?: any): any {
switch (args) {
case 'medium':
return super.transform(value, this.customDateFormats.medium);
case 'short':
return super.transform(value, this.customDateFormats.short);
case 'fullDate':
return super.transform(value, this.customDateFormats.fullDate);
case 'longDate':
return super.transform(value, this.customDateFormats.longDate);
case 'mediumDate':
return super.transform(value, this.customDateFormats.mediumDate);
case 'shortDate':
return super.transform(value, this.customDateFormats.shortDate);
case 'mediumTime':
return super.transform(value, this.customDateFormats.mediumTime);
case 'shortTime':
return super.transform(value, this.customDateFormats.shortTime);
default:
return super.transform(value, args);
}
}
}
// app.component.html
{{ someDate | date: 'medium' }} // The custom format will be displayed
Если я использую что-то вроде {{ someDate | date: 'MM/dd/yyyy' }}
, оно тоже работает.
Так что, в общем, мне интересно, есть ли случай, когда это не будет работать должным образом или, может быть, есть лучший способ добиться этого, но с другой реализацией?