У меня есть дата в строковом формате в коллекции Firebase, и я пытаюсь ее отобразить.Насколько я понимаю, конвейерные фильтры не работают для строк, а только для объектов Date.Для этого мне нужно использовать пользовательскую трубу.
Я использовал следующую функцию :
transform(value: string) {
var datePipe = new DatePipe("en-US");
value = datePipe.transform(value, 'MM-dd-yyyy');
return value;
}
и одну с моментом :
transform(value: string) {
let d = new Date (value);
return moment(d).format('DD-MM-YYYY');
}
Первый из них дает ошибку ниже:
, а второй дает недопустимую дату.
Ниже приведены данные в коллекции:
Ниже приведен файл pipe :
import {Pipe, PipeTransform} from '@angular/core';
import { DatePipe } from '@angular/common';
import * as moment from 'moment'
@Pipe({
name: 'dateFormatPipe'
})
export class formatDate implements PipeTransform {
transform(value: string) {
var datePipe = new DatePipe("en-US");
value = datePipe.transform(value, 'MM-dd-yyyy');
return value;
}
}
И ниже - html :
<tr *ngFor="let v of list">
<td>{{v?.NoOfDays}}</td>
<td>{{v?.vacationType|json}}</td>
<td>{{v?.SubmissionDate.toDate()|date}}</td>
<td>{{v?.fromDate| dateFormatPipe }}</td>
<td>{{v?.endDate | dateFormatPipe }}</td>
</tr>
PS SubmissionDateработает нормально, так как это объект даты, тогда как fromDate и endDate не работают.
Есть предложения?
Заранее спасибо
![enter image description here](https://i.stack.imgur.com/ZZvbe.png)
![enter image description here](https://i.stack.imgur.com/yVNFQ.png)