【问题标题】:Angularfire get list and render it dynamicallyAngularfire 获取列表并动态渲染
【发布时间】:2018-07-11 18:25:38
【问题描述】:

我尝试动态使用 Angular,但在我的 HMI 中遇到了一些问题,所以现在我发现了 Angularfire。 Doc 看起来有点过时了,我发现现在没有很好的例子。我需要构建一个动态应用程序。我按照 angularfire2 docs + stackoveflow 中的步骤得到了这个:

export class RoomsComponent implements OnInit {
    rooms: AngularFireList<Room[]>;

    constructor(private roomService: RoomService, private router: Router, private db: AngularFireDatabase) {
        this.rooms = db.list('rooms');
        console.log( this.rooms );
     }

控制台输出: db.list('rooms')

<li *ngFor="let room of rooms">
    <pre>{{ room.id }}</pre>

</li>

会报错:

错误错误:找不到不同的支持对象“[object Object]” '对象'类型。 NgFor 仅支持绑定到 Iterables,例如 数组。

尝试添加

|异步

但会给

错误错误: InvalidPipeArgument: '[object Object]' 用于管道 '异步管道'

Firebase 数据库: database

(例如,如果在db中添加了某些内容,则需要在每个用户的页面中动态更新) 一些帮助会很棒!

【问题讨论】:

    标签: angular firebase angularfire2


    【解决方案1】:

    将房间变量更改为

    rooms: Observable<any>;
    

    要检索数据,您需要使用 ValueChanges 方法。

     constructor(private roomService: RoomService, private router: Router, 
     private db: AngularFireDatabase) {
            this.rooms = db.list('rooms').valueChanges();;
            console.log( this.rooms );
         }
    

    【讨论】:

    • 我也试过了,但是有: src/app/rooms/rooms.component.ts(27,3) 中的错误:错误 TS2322:类型 'Observable' 不可分配输入'AngularFireList'。
    • 把你的房间改成房间:Observable;然后使用 asyn 管道访问数据
    • 看起来工作但仍然在 src/app/rooms/rooms.component.ts(31,3) 中出现错误:错误 TS2322:类型 'Observable' 不可分配给类型'可观察的'。试图使用订阅来纠正,但错误错误:未捕获(承诺):类型错误:无法读取未定义的属性“订阅”
    • 将泛型类型更改为任何可以解决问题的类型
    • 这就是我所做的:“'Observable' 不能分配给类型 'Observable'”
    猜你喜欢
    • 2017-01-04
    • 1970-01-01
    • 2022-11-13
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2020-01-31
    相关资源
    最近更新 更多