【发布时间】:2019-08-27 10:28:41
【问题描述】:
【问题讨论】:
-
了解创建自定义角管
-
根据Angular Documentation不建议使用此类管道。
-
@kinny94 这完全取决于用例,我们是否有使管道不纯的要求,数据是否在变化?如果是,那么可以更改参考吗?
标签: angular angular2-pipe
【问题讨论】:
标签: angular angular2-pipe
我只是要扩展上面的@xyz 答案,并建议你做这样的事情,
dobDates = [
'1949-04-06',
'1963-04-11',
'1965-04-05',
'1970-04-12'
]
ngOnInit(){
this.dobDates.sort((a, b) => {
let firstDate = new Date(a);
let secondDate = new Date(b);
firstDate.setFullYear(2000);
secondDate.setFullYear(2000);
if (firstDate.getTime() < secondDate.getTime()) {
return -1
}
return 1
})
}
排序和过滤管道性能不佳,并防止过度缩小。结帐Angular Documentation
【讨论】:
我创建了一个自定义管道,其中我将日期的年份部分作为所有日期的常量,然后比较它们的时间以按升序获取日期。 Date.getTime() 将给出自 1970 年 1 月 1 日以来经过的毫秒数,(如果我们在此之前有日期,那么它将是负数)。由于比较日期的年份设置为“2000”,因此它们都将以正毫秒为单位提供 getTime()。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sortDate'
})
export class SortDatePipe implements PipeTransform {
transform(value: any, args?: any): any {
return value.sort((a, b) => {
let firstDate = new Date(a);
let secondDate = new Date(b);
firstDate.setFullYear(2000);
secondDate.setFullYear(2000);
if (firstDate.getTime() < secondDate.getTime()) {
return -1
}
return 1
})
}
}
https://stackblitz.com/edit/angular-hsdkau?file=src%2Fapp%2Fapp.component.html
【讨论】: