将变量用作角度的Firebase参考

时间:2019-02-25 21:00:30

标签: javascript angular firebase-realtime-database angularfire2

我想让一个字符串变量包含一个值,然后使用它来设置我的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)
    })
}}

1 个答案:

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