在 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();   
  })
}}