2016-12-01 66 views
1

我是新来的前端开发人员和Angular2。Angular2使用日期管道进行日期排列

我正在写一个应用程序,我给了fromDate和endDate,并且该应用程序需要显示日期范围。例如,fromDate = '10/02/2016' endDate = '11/02/2016',该应用将显示2016年2月10日至11日的日期范围,并且此日期范围格式可能会在将来发生变化(当然,还需要考虑月数或年数不同的情况)。

我的想法是用链接管道:{{ dateArray | date: 'dd/MM/yyyy' | rangeDate}}其中dateArray = [fromDate, endDate]我希望{{ dateArray | date: 'dd/MM/yyyy'}}可以返回两种格式的日期字符串(数组中的),所以我就可以用我的自定义管道创建:

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

@Pipe({name: 'dateRange'}) 
export class DateRangePipe implements PipeTransform { 
    transform(value: string[], args: any[]) { 
    return "desired output"; 
    } 
} 

轻松用两个字符串操纵两个得到所需的输出。

但是,这是错误的,因为Angular 2日期管道不能将多个日期值传输到字符串,它的返回类型是string而不是string[]

所以我想知道是否有办法在HTML中编写一个for-loop-like的东西来实现这个任务。比如,它需要一个date[],并将其每个项目发送到日期管道,并将结果合并到一个string[]并将其发送到dateRange管道。

回答

1

date管道不会帮你在这里,因为:a)因为你已经计算出日期管道不会将数组作为输入; b)你有特殊的要求把两个日期翻译成实际上是他们表示的混合部分,日期管不知道如何去做。 你需要实现你自己的dateRange管道(你正在尝试的类型),这将需要一个日期数组并产生单个字符串格式化为你希望的输出。