最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to convert string to type date in dynamically generated mat-table - Stack Overflow

programmeradmin0浏览0评论

I have a mat-table which displays columns Date, Before Time Period and After Time Period. Code for HTML :-

<ng-container
            matColumnDef="{{ column }}"
            *ngFor="let column of columnsToDisplay"
        >
            <th mat-header-cell *matHeaderCellDef>{{ column }}</th>
            <td mat-cell *matCellDef="let element">
                {{ element[column]  }}
            </td>
        </ng-container>

TypeScript Code:

columnsToDisplay = [
    'executionDate',
    'previousTimePeriod',
    'afterTimePeriod'
];
executionDate: string = new Date().toISOString().slice(0, 10);

If I use a pipe {{ element[column] | date: 'yyyy-MM-dd'}} to display Date of type string to date type then I am not able to see Before and After Time Period. How can I view date only as 'yyyy-MM-dd'

I have a mat-table which displays columns Date, Before Time Period and After Time Period. Code for HTML :-

<ng-container
            matColumnDef="{{ column }}"
            *ngFor="let column of columnsToDisplay"
        >
            <th mat-header-cell *matHeaderCellDef>{{ column }}</th>
            <td mat-cell *matCellDef="let element">
                {{ element[column]  }}
            </td>
        </ng-container>

TypeScript Code:

columnsToDisplay = [
    'executionDate',
    'previousTimePeriod',
    'afterTimePeriod'
];
executionDate: string = new Date().toISOString().slice(0, 10);

If I use a pipe {{ element[column] | date: 'yyyy-MM-dd'}} to display Date of type string to date type then I am not able to see Before and After Time Period. How can I view date only as 'yyyy-MM-dd'

Share Improve this question asked Feb 12, 2019 at 7:41 Cpt KitkatCpt Kitkat 1,4024 gold badges36 silver badges54 bronze badges 1
  • Please provide some sample data to work with. Also, it would be really helpful if you could provide a sample stackblitz replicating your issue. – SiddAjmera Commented Feb 12, 2019 at 7:45
Add a ment  | 

3 Answers 3

Reset to default 4

create a pipe:

import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';

@Pipe({
  name: 'momentPipe',
  pure: false
})
export class MomentPipe implements PipeTransform {

  constructor() { }

  transform(value: string, dateFormat: string): any {
        return moment(value).format(dateFormat);
    }
}

then in html:

<span >{{ element[column] | momentPipe: 'dddd D MMM YYYY' }}</span>  

You need moment for this approach see here more formats

My suggestion is to use angular momentjs

So it'll be simple that you can use its filter as

{{ element[column] | amParse: 'YYYY-MM-DDTHH:mm:ss.SSSSZ' | amDateFormat: 'yyyy-MM-dd' }}

Another idea is you can convert your string-date into 'yyyy-MM-dd' format and replace with replacing with string-date.

This link should help you.

发布评论

评论列表(0)

  1. 暂无评论