我在Angular 2中使用AngularFire获取唯一键的值时遇到问题。
这是我的结构:
正如您所看到的,报告中包含唯一的键值。我可以使用*ngFor
轻松获取这些值,但我想要的是获取唯一键的值。这是我的代码:
import { AngularFire, FirebaseListObservable} from 'angularfire2';
export class MapsComponent implements OnInit {
item: FirebaseListObservable<any[]>;
constructor(private af: AngularFire) {
this.item = af.database.list('/reports/-Ka2fkQJ3krtBztMtiRD')
}
ngOnInit() {
}
}
HTML:
<md-card>
<md-card-title>Report</md-card-title>
<md-card-content>
{{item.plateNumber}}
</md-card-content>
</md-card>
如您所见,我想在键-Ka2fkQJ3krtBztMtiRD
中获取值,因此我所做的是af.database.list('/reports/-Ka2fkQJ3krtBztMtiRD')
。我什么都没得到,甚至没有错误。
我在这里遗漏了什么吗?任何帮助将不胜感激。
答案 0 :(得分:4)
如果你想要一个引用单个对象而不是列表的observable,你应该使用FirebaseObjectObservable
:
import { AngularFire, FirebaseObjectObservable } from 'angularfire2';
...
export class MapsComponent implements OnInit {
item: FirebaseObjectObservable<any>;
constructor(private af: AngularFire) {
this.item = af.database.object('/reports/-Ka2fkQJ3krtBztMtiRD');
}
ngOnInit() {
}
}
您的模板将是这样的:
<md-card>
<md-card-title>Report</md-card-title>
<md-card-content>
{{(item | async)?.plateNumber}}
</md-card-content>
</md-card>
如果您担心在整个模板中散布了大量item | async
个词,那么您可以利用ngIf
's support for local variables:
<md-card *ngIf="item | async; let i">
<md-card-title>Report</md-card-title>
<md-card-content>
{{i.plateNumber}}
</md-card-content>
</md-card>