首页 > 解决方案 > 类型'可观察的' 必须有一个返回迭代器的 '[Symbol.iterator]()' 方法

问题描述

这是我的管理界面

export interface Admin{
  name: string;
  email: string;
  telephone: string;
  address: string;
  nic: string;
}

这是我的构造函数

  constructor(
    private afs: AngularFirestore,
    private admins: Observable<Admin[]>,
    private adminDoc: AngularFirestoreCollection<Admin>
    ){
      this.adminDoc = this.afs.collection<Admin>('users/user/admin');  
      this.admins = this.adminDoc.snapshotChanges().pipe(
        map(actions => actions.map(a=>{
          var data = a.payload.doc.data() as Admin;
          const id = a.payload.doc.id;      
          return {id,...data}
        }))
      );
     }

这是我得到错误的地方

for(let admin of this.admins){
}

我该如何解决这个问题?

标签: angulargoogle-cloud-firestoreangularfire

解决方案


this.admins 现在是一个 observable,你不能迭代 observable,你必须订阅它。或将for循环逻辑移到里面:

  map(actions => actions.map(a=>{
       var data = a.payload.doc.data() as Admin;
       const id = a.payload.doc.id; 

        //====> you have access to all items of here

        return {id,...data}
   }))

或者像这样订阅它:

this.admins.subscribe(admins => console.log(admins));


推荐阅读