角打字稿的foreach不能因为某些原因获得价值

问题描述:

我不能接受给定元素值的打字稿foreach循环角打字稿的foreach不能因为某些原因获得价值

constructor(db: AngularFireDatabase) { 

} 
this.fbUserData = this.db.list('users/'+this.userid).valueChanges() 
     this.fbUserData.forEach(element => { 
     this.currentRole = element[2].toString(); // receive value 
    }) 

现在里面环路我想从AngularFireBase 获得的价值我尝试以下之外:

this.userid = this.firebaseAuth.auth.currentUser.uid.toString(); 
     this.fbUserData = this.db.list('users/'+this.userid).valueChanges() 
     this.fbUserData.forEach(element => { 
      this.rolelist.push(element[2].toString()); 
    }) 

但this.rolelist(array)在循环外保持为空。在循环内它会收到状阵列[“测试”]

值我希望它的循环这样外CONSOLE.LOG:

checkAuth(data){ 


    this.userid = this.firebaseAuth.auth.currentUser.uid.toString(); 
    this.fbUserData = this.db.list('users/'+this.userid).valueChanges() 
    this.fbUserData.forEach(element => { 
     this.rolelist.push(element[2].toString()); 
}) 
    console.log(this.rolelist); 

使得this.rolelist具有从所述元件值foreach循环

+0

您认为'this.fbUserData'是什么?你的IDE说它是什么?一旦你弄清楚它是什么,你可以用它做什么样的事情?你认为'forEach'应该做什么?你认为它是'Array#forEach'还是'FirebaseListObservable#forEach',它们是完全不同的?顺便说一下,如果这是一个AngularFire问题,请标记为这样,并提及您使用的版本。另外,如果没有太多麻烦,请自己和其他人一起帮忙,并妥善缩进代码。 – 2017-10-13 17:18:50

+0

你不能在订阅以外使用它,这是异步的,检查:https://stackoverflow.com/questions/43055706/how-do-i-return-the-response-from-an-observable-http-async-call -in-angular2 – Alex

您的Firebase调用返回一个Observable =>您必须.subscribe()this.fbUserData才能访问该值。
this.fbUserData.subscribe(userData => {});
每次数据更改时都会调用订阅中的函数,以新数据作为参数。如果你不想更新你可以做this.fbUserData.first().subscribe(userData => {});
您可能需要import 'rxjs/add/operator/first';才能正常工作