我想知道使用纯可观察对比订阅可观察对象并使用数组的最佳实践。
选项1 - “纯粹可观察”
this.schools = this.angularFire.database.list('schools')
然后在HTML中使用异步管道(以及用于处理数据的rxjs运算符)
选项2 - “订阅数组”
this.angularFire.database.list('schools').subscribe (response => this.schools=response)
然后将其视为普通数组。
答案 0 :(得分:3)
正如olsn在评论中指出的那样,使用异步管道处理这种情况总是更实际。
但是,如果您出于任何原因选择使用手动订阅方法(在向用户显示数据之前以某种方式在客户端操作数据),您还需要手动取消订阅。
基本上,您需要在组件中编写类似的内容:
ngOnInit(){
this.subscription = this.angularFire.database.list('schools').subscribe(response => this.schools=response)
}
//then somewhere in your code
ngOnDestroy(){
this.subscription.unsubscribe();
}
为了避免手动取消订阅以及是否只需要读取一次的数据,您可以使用其中一个可用的运算符,例如take()。
this.angularFire.database.list('schools').take(1).subscribe(response => this.schools=response)
此方法将确保在第一次运行查询后自动取消订阅observable。