在 angular 中使用变量作为 firebase 参考
Using a variable as a firebase reference in angular
我想让一个字符串变量包含一个值,然后用它来设置我的 firebase 数据库的引用路径。前任。 uid
将存储路由 paramMap 中的变量,然后在路径中用于从数据库中获取数据。我在下面尝试了这个,但显然没有用。
export class HistoryComponent implements OnInit {
snaps: Observable<any[]>;
uid: string;
constructor(db: AngularFireDatabase
private ngZone: NgZone, private afs: AngularFirestore, private route:
ActivatedRoute){
this.snaps = db.list('snapity-tests/12-02-19/'+ $(uid)).valueChanges();
}
ngOnInit() {
this.route.paramMap
.subscribe(params => {
this.uid = params.get('uid');
console.log(this.uid)
})
}}
您需要将构造函数中的代码移动到 ngOnInit
生命周期挂钩,因为 class 构造函数总是在 onInit
挂钩之前调用。
如 Angular Docs 中所述:
A lifecycle hook that is called after Angular has initialized all data-bound properties of a directive
所以,你只需要订阅路由参数,然后,当你有你想要的值时,你就可以使用它了:
export class HistoryComponent implements OnInit {
snaps: Observable<any[]>;
uid: string;
constructor(
private db: AngularFireDatabase,
private ngZone: NgZone,
private afs: AngularFirestore,
private route: ActivatedRoute
){ }
ngOnInit() {
this.route.paramMap
.subscribe(params => {
this.uid = params.get('uid');
this.snaps = db.list('snapity-tests/12-02-19/'+ this.uid).valueChanges();
})
}}
我想让一个字符串变量包含一个值,然后用它来设置我的 firebase 数据库的引用路径。前任。 uid
将存储路由 paramMap 中的变量,然后在路径中用于从数据库中获取数据。我在下面尝试了这个,但显然没有用。
export class HistoryComponent implements OnInit {
snaps: Observable<any[]>;
uid: string;
constructor(db: AngularFireDatabase
private ngZone: NgZone, private afs: AngularFirestore, private route:
ActivatedRoute){
this.snaps = db.list('snapity-tests/12-02-19/'+ $(uid)).valueChanges();
}
ngOnInit() {
this.route.paramMap
.subscribe(params => {
this.uid = params.get('uid');
console.log(this.uid)
})
}}
您需要将构造函数中的代码移动到 ngOnInit
生命周期挂钩,因为 class 构造函数总是在 onInit
挂钩之前调用。
如 Angular Docs 中所述:
A lifecycle hook that is called after Angular has initialized all data-bound properties of a directive
所以,你只需要订阅路由参数,然后,当你有你想要的值时,你就可以使用它了:
export class HistoryComponent implements OnInit {
snaps: Observable<any[]>;
uid: string;
constructor(
private db: AngularFireDatabase,
private ngZone: NgZone,
private afs: AngularFirestore,
private route: ActivatedRoute
){ }
ngOnInit() {
this.route.paramMap
.subscribe(params => {
this.uid = params.get('uid');
this.snaps = db.list('snapity-tests/12-02-19/'+ this.uid).valueChanges();
})
}}