Angular 如何使用角度中的管道按日期字符串排序?
我需要为我的帖子提供一个排序方法,我会得到所有帖子,但从最老的帖子开始,我希望能够根据属性[formattedDate:string]或至少基于[datePost:Date]将我的新帖子放在第一位。 我在整理帖子时遇到了问题,我尝试了很多选择,但总是出现同样的错误:Angular 如何使用角度中的管道按日期字符串排序?,angular,typescript,pipe,Angular,Typescript,Pipe,我需要为我的帖子提供一个排序方法,我会得到所有帖子,但从最老的帖子开始,我希望能够根据属性[formattedDate:string]或至少基于[datePost:Date]将我的新帖子放在第一位。 我在整理帖子时遇到了问题,我尝试了很多选择,但总是出现同样的错误: ERROR TypeError: item.sort is not a function 我不知道下一步该怎么办。。请帮帮我:嗨,我问了一位朋友,他为nodeJs做了排序,他说他使用了reverse(); 于是我意识到,我只需要换
ERROR TypeError: item.sort is not a function
我不知道下一步该怎么办。。请帮帮我:嗨,我问了一位朋友,他为nodeJs做了排序,他说他使用了reverse(); 于是我意识到,我只需要换一种方式,使用“日期”属性进行排序,就可以首先获得新帖子 这是最终代码:
transform(array: PostG[], args: string): PostG[] {
if(!array || array === undefined || array.length === 0) return null;
array.sort((a: any, b: any) => {
if (a.datePost > b.datePost) {
return -1;
} else if (a.datePost < b.datePost) {
return 1;
} else {
return 0;
}
});
console.log(array);
return array;
}
transform(数组:PostG[],args:string):PostG[]{
如果(!array | | array==undefined | | array.length==0)返回null;
array.sort((a:any,b:any)=>{
如果(a.datePost>b.datePost){
返回-1;
}否则如果(a.datePost
谢谢 Aqua,您应该使用
array.sort((a:any,b:any)=>{..}
而不是array.forEach(item=>item.sort(…)
我也尝试过,但我得到了所有数组,没有任何更改。我使用了ngFor上的管道,没有对我的帖子进行排序,因为我认为它无法访问属性formattedDate。formattedDate是yyyy MM dd?的方式,如果有值应该工作。注意,在自己的函数排序中,可以添加一个console.log(a,b)
export interface PostG {
getTime();
author: { [key: string]: Author};
datePost: Date;
description: string
dislike: number[];
formattedDate: string;
images: string[];
like: number[];
linkEdit: string;
link:string;
slug: string;
title: string
uniqueID: string;
}
ngOnInit() {
this.http.get(this.apiKey).subscribe((data: any) =>{
this.allPosts = data.data.post;
console.log(data);
})
}
transform(array: PostG[], args: string): PostG[] {
if(!array || array === undefined || array.length === 0) return null;
array.sort((a: any, b: any) => {
if (a.datePost > b.datePost) {
return -1;
} else if (a.datePost < b.datePost) {
return 1;
} else {
return 0;
}
});
console.log(array);
return array;
}