繁体   English   中英

在 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生命周期钩子,因为类构造函数总是在onInit钩子之前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();   
  })
}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM