Angular 2导入DatePipe和转换不起作用

时间:2016-12-14 12:40:15

标签: angular angular2-routing angular2-forms angular-filters

我使用Angular 2获取异常免费日期,这样的情况我从服务器获取'0000-00-00'日期并抛出异常,所以我按照Pipe进行过滤。

{{"2016-05-11" | dateFormat:task_.date_format}} 

管道代码 -

import { Pipe, PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';
import { TaskService } from '../providers/taskService';

@Pipe({name: 'dateFormat'})
export class DateFormatPipe implements PipeTransform{


    constructor(public taskService: TaskService,private datePipe: DatePipe){}

    transform(value :any[],arg:any): any  {

        console.log("dateFormat value "+value+"\n arg "+arg);

        let format_ = this.taskService.getDateFormate(arg);
        console.log("format_ ",format_)
        let formatted = this.datePipe.transform(value, format_);
        console.log("formatted "+formatted);
        // if (value == this.taskService.getDateFormate(arg)) {
        return value;
        // }
    }
}

但是它不起作用,我只想要那个适当的日期然后返回选择即yyyy-mm-dd,mm-dd-yyyy等等,否则返回0000-00-00。

2 个答案:

答案 0 :(得分:1)

给出类似

的变量类型
datePipeEn: DatePipe = new DatePipe('en-US');

别忘了' en-Us '然后使用转换方法。

答案 1 :(得分:0)

您是否已将管道包含在app.module文件的引导程序中(声明数组)?

然后检查你的陈述中的拼写错误(猜测Formate应格式化)     let format_ = this.taskService.getDateFormate(arg);

除此之外,您是否知道Angular2已it's own implementation of the Date pipe?此外,正如文档中所述,如果您使用的是Safari或旧浏览器,则必须包含ECMAScript国际化API

请检查您的变量命名约定(在我看来,task_看起来不太好......)