Использование переменной в качестве эталонной базы в угловых - PullRequest
0 голосов
/ 26 февраля 2019

Я хотел бы, чтобы строковая переменная содержала значение, а затем использовала его, чтобы установить ссылочный путь к моей базе данных firebase.Ex.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 голосов
/ 26 февраля 2019

Вам нужно переместить свой код внутри конструктора в хук жизненного цикла 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();   
  })
}}
...