当我想要在添加新项目后反转我的观察列表时,我遇到了一个问题
我在第一次启动时使用了这种方法来反转它。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'reverse'
})
export class ReversePipe implements PipeTransform {
transform (value) {
if(!value)return;
return value.reverse();
}
}
在HTML中
<div *ngFor="let msg of (msgsList | async) | reverse">
但在添加任何新项目后,显示为此图片的列表[ List after adding ]
我也检查了这个链接https://stackoverflow.com/questions/40293539/is-it-possible-to-reverse-a-firebase-list,但结果是一样的
发布于 2018-01-23 12:23:12
假设您和我有相同的情况,并且列表在服务器端,在angular前端有一个副本。您可以在后台使用.push()
追加列表,但在客户端使用.unshift()
。
因此,每次您从服务器重新查询列表时,您仍然使用| reverse
,但是当您向列表中添加内容时,您将在前端列表上使用.unshift()
,并将ajax POST发送到使用.push()
的服务器端。
如果你只有客户端应用程序,我假设你只能使用.unshift()
,而不能使用反向管道。
我是如何使用它的:
客户端:
private messageStore = [];
private messageSubject = new Subject();
messages = this.messageSubject.asObservable();
//..
this.messageStore.unshift(newMessage);
this.messageSubject.next(this.messageStore);
//..
<div *ngFor="let message of (webService.messages | async) | reverse">
然后ajax Post to server和server会这样做:
messages.push(req.body);
每次刷新页面或从服务器加载整个消息列表时,只需将其设置为新的客户端列表即可。
this.messageStore = response.json();
this.messageSubject.next(this.messageStore);
https://stackoverflow.com/questions/45364570
复制相似问题