Angular 如何查找已完成项目的总长度?
如何查找已完成项目的总长度? 如何查找已完成的项目总数(TODO)?在项目列表中 如何在数组中查找某个对象的长度Angular 如何查找已完成项目的总长度?,angular,firebase,firebase-realtime-database,angularfire2,angular5,Angular,Firebase,Firebase Realtime Database,Angularfire2,Angular5,如何查找已完成项目的总长度? 如何查找已完成的项目总数(TODO)?在项目列表中 如何在数组中查找某个对象的长度 <div>Todo List:</div> {{(items | async)?.length}} <-- Total Items in list <div>{{(items.completed | async)?.length}}</div> <!-- Total completed items? - length o
<div>Todo List:</div> {{(items | async)?.length}} <-- Total Items in list
<div>{{(items.completed | async)?.length}}</div> <!-- Total completed items? - length of total completed items
<hr>
<ul *ngIf="todo_all">
<li *ngFor="let item of items | async" [class.completed]="item.completed">
{{item.description}}
</li>
</ul>
itemsRef: AngularFireList;
items: Observable<Todo[]>;
constructor(db: AngularFireDatabase) {
this.itemsRef = db.list('todos')
// Use snapshotChanges().map() to store the key
this.items = this.itemsRef.snapshotChanges().map(changes => {
return changes.map(c => ({ key: c.payload.key, ...c.payload.val() }));
});
}
Todo List:{{(items | async)?.length}实际上,您可以从现有的可观察对象中筛选客户端上的项,或者进行简单的查询以获取已完成的项
completedItemsCount: Observable<number>;
另一种方式:
this.completedItemsCount = db
.list('/todos', ref => ref.orderByChild('completed').equalTo(true))
.map(changes => {
return changes.map(c => (
{
key: c.payload.key,
...c.payload.val(),
}
)).length; // Eventually return the length
});
当然,如果你能将计数器保存在数据库中的某个地方,这样你就不必为了一个数字而首先得到整个列表,这当然会更好,但这可能会非常有效,除非你的待办事项列表非常庞大。如果是的话,第一次出现这个号码要花很多时间。我希望这有帮助
this.completedItemsCount = db
.list('/todos', ref => ref.orderByChild('completed').equalTo(true))
.map(changes => {
return changes.map(c => (
{
key: c.payload.key,
...c.payload.val(),
}
)).length; // Eventually return the length
});