角打字稿的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循环
答
您的Firebase调用返回一个Observable =>您必须.subscribe()
到this.fbUserData
才能访问该值。 this.fbUserData.subscribe(userData => {});
每次数据更改时都会调用订阅中的函数,以新数据作为参数。如果你不想更新你可以做this.fbUserData.first().subscribe(userData => {});
。
您可能需要import 'rxjs/add/operator/first';
才能正常工作
您认为'this.fbUserData'是什么?你的IDE说它是什么?一旦你弄清楚它是什么,你可以用它做什么样的事情?你认为'forEach'应该做什么?你认为它是'Array#forEach'还是'FirebaseListObservable#forEach',它们是完全不同的?顺便说一下,如果这是一个AngularFire问题,请标记为这样,并提及您使用的版本。另外,如果没有太多麻烦,请自己和其他人一起帮忙,并妥善缩进代码。 – 2017-10-13 17:18:50
你不能在订阅以外使用它,这是异步的,检查:https://stackoverflow.com/questions/43055706/how-do-i-return-the-response-from-an-observable-http-async-call -in-angular2 – Alex