【问题标题】:Angular 2 Pipe ShortDate on NGX Data TableNGX数据表上的Angular 2 Pipe ShortDate
【发布时间】:2017-08-24 23:21:01
【问题描述】:

我想在 Angular 2 NGX 数据表中将日期列格式化为短日期。

这是 HTML:

<ngx-datatable
  [rows]="toDos"
  [columns]="columns">
</ngx-datatable>

这里是 TypeScript 组件

import { Component, OnInit } from '@angular/core';
import { IToDo } from '../shared/todo';
import { ToDoService } from '../shared/todo.service';

@Component({
  selector: 'app-todo-list',
  templateUrl: './todo-list.component.html',
  styleUrls: ['./todo-list.component.css']
})

export class TodoListComponent implements OnInit {

  toDos: IToDo[];
  columns = [
    { prop: 'toDoId' },
    { name: 'To Do', prop: 'name' },
    { prop: 'priority' },
    { prop: 'dueDate'  },
    { prop: 'completed' }
  ];

  constructor(private _toDoService: ToDoService) {
  }

  ngOnInit() {
    this.toDos = this._toDoService.getToDos();
  }
}

我在 HTML 中尝试过,但它给出了模板解析错误:

<ngx-datatable
  [rows]="toDos"
  [columns]="columns"
      <ngx-datatable-column prop="dueDate">
      <ng-template let-value="value" ngx-datatable-cell-template>
        {{value | date[:shortDate]}}
      </ng-template>
    </ngx-datatable-column>
    >
</ngx-datatable>

【问题讨论】:

  • 那不是有效的 HTML
  • 你测试过{{ value | date: 'shortDate' }}吗?

标签: angular angular2-template angular2-pipe ngx-datatable


【解决方案1】:

您可以只使用date pipe 来格式化值。

{{value | date:'shortDate'}} 等价于{{value | date:'ymd'}},其输出日期如下:22/08/2017

【讨论】:

    【解决方案2】:

    您的 HTML 是错误的。应该如下图。

    <ngx-datatable
      [rows]="toDos"
      [columns]="columns">
           <ngx-datatable-column name="dueDate">
            <ng-template let-row="row" ngx-datatable-cell-template>
              {{row.dueDate | date:'shortDate'}}
            </ng-template>
          </ngx-datatable-column>
    </ngx-datatable>
    

    请在此处找到示例代码:https://github.com/swimlane/ngx-datatable/blob/master/demo/sorting/sorting-default.component.ts

    这个例子:http://swimlane.github.io/ngx-datatable/

    【讨论】:

      【解决方案3】:

      希望对你有帮助

        <ng-template #dateColumn let-row="row" let-value="value" let-i="index">
          {{value | date:'dd-MM-yyyy'}}
        </ng-template>
      
      export class CvbankListComponent implements OnInit {
        @ViewChild('dateColumn') dateColumn: TemplateRef<any>;
          .
          .
          .
          this.columns = [
             .
             .
            { name: 'Date', prop: 'Date', cellTemplate: this.dateColumn },
          ];
      

      【讨论】:

        【解决方案4】:
        constructor(
        private fb: FormBuilder,
        private _currencyPipe: CurrencyPipe,
        private _datePipe: DatePipe
        ) {
        this.rows = [
          {from: Date().toString(), to: Date(), amount: 100, verified: false},
          {from: Date(), to: Date(), amount: 100, verified: true},
        ];
        }
        
        ngOnInit() {
        
        this.columns = [
          { name: 'FROM', prop: 'from', pipe: this.datePipe()},
          { name: 'TO', prop: 'to', pipe: this.datePipe()},
          { name: 'AMOUNT', prop: 'amount', width: 85, pipe: this._currencyPipe},
          { name: 'CONFIRM | DELETE', cellTemplate: this.editCell, width: 155}
        ];
        this.buildForm();
        }
        
        datePipe () {
        return {transform: (value) => this._datePipe.transform(value, 'MM/dd/yyyy')};
        }
        

        您始终可以使用编程方法来应用管道,事实上您可以使用这种方法创建自定义管道。 ngx-dataTable 中的管道@Input 需要一个带有转换的管道结构:函数。您可以创建任何返回转换函数的函数并随意操作数据。

        【讨论】:

          【解决方案5】:

          我认为在列配置上使用 pipe 属性的这种方式非常干净(不确定 Angular 2 是否能够像 OP 要求的那样处理这个问题,但 Angular 10 可以)

          class DateOnlyPipe extends DatePipe {
            public transform(value): any {
              return super.transform(value, 'MM/dd/y');
            }
          }
          
          const columns = [{
            name: 'Date',
            prop: 'dateReported',
            pipe: new DateOnlyPipe('en-US')
          }];
          

          来源:https://github.com/swimlane/ngx-datatable/issues/401#issuecomment-311635384

          【讨论】:

            猜你喜欢
            • 2017-07-30
            • 2018-02-27
            • 1970-01-01
            • 2017-01-19
            • 2016-11-23
            • 1970-01-01
            • 1970-01-01
            • 2019-05-24
            • 2018-05-01
            相关资源
            最近更新 更多