我想让一个字符串变量包含一个值,然后使用它来设置我的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)
})
}}
答案 0 :(得分:1)
您需要将构造函数中的代码移至ngOnInit
生命周期挂钩,因为类构造函数总是在onInit
挂钩之前调用。
如Angular Docs中所述:
在Angular初始化指令的所有数据绑定属性之后调用的生命周期挂钩
因此,您只需要订阅路由参数,然后,当您拥有所需的值时,就可以使用它:
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();
})
}}