AngularFirebase FirebaseListObservable无法获取uid

时间:2018-01-22 19:55:19

标签: angular firebase firebase-realtime-database angularfire

我有一个我想要显示的用户列表。 哪个有效,我可以显示用户名但不能显示键。 {{user.uid}}或{{user.key}}打印所有名称,{{user.username}}。 有什么想法吗?

我的结构看起来像这样:

enter image description here

Component.ts

    allUsers: FirebaseListObservable<any[]>;

  constructor(private afAuth: AngularFireAuth,
    private db: AngularFireDatabase, private router: Router) {

      this.allUsers = db.list('/users');
   }

Component.html

  <ul class="list-group gamer-list">
  <li class="list-group-item agamer" *ngFor="let user of allUsers | async">
    <div class="material-switch">
     <input id="switch{{user.username}}" name="switch{{user.username}}" type="checkbox"/>
     <label for="switch{{user.username}}" class="switch{{user.username}}"></label>
                    </div>
                    {{user.key}} - {{user.username}}
                </li>
        </ul>

1 个答案:

答案 0 :(得分:0)

解决我的问题:

我尝试将代码更改为:

 this.userRef = db.list('/users');
      this.allUsers = this.userRef.snapshotChanges().map(changes => {
          return changes.map(c => ({ key: c.payload.key, ...c.payload.val() 
      }));
     });

起初我有

allUsers: FirebaseListObservable<any[]>;

但看起来像FirebasListObservable&amp; amp;我不得不这样做:

  userRef: AngularFireList<any>;
  allUsers: Observable<any[]>;

但它仍然不可能 - 我的编码程序中有一个错误,使用this.allUsers,它说它是FirebaseListObservable类型,但事实并非如此。 所以我改变了我的导入: 从

import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database-deprecated';

要:

import { AngularFireDatabase, AngularFireList  } from 'angularfire2/database';

希望这有助于所有面临同样问题的人!