Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularfire2快照更改订阅管道问题_Angular_Firebase_Angularfire2 - Fatal编程技术网

Angularfire2快照更改订阅管道问题

Angularfire2快照更改订阅管道问题,angular,firebase,angularfire2,Angular,Firebase,Angularfire2,我正在使用@angular/fire,我刚刚为数据库创建了snapshotChanges(),现在我尝试订阅它以保持更新 返回此.db.list(此.BASE_路径).snapshotChanges().subscribe( 项目=>{ 返回item.map(a=>{ var p=新计划; p、 key=a.payload.key; p、 name=a.payload.child(this.name.val(); p、 descripton=a.payload.child(this.descr

我正在使用@angular/fire,我刚刚为数据库创建了snapshotChanges(),现在我尝试订阅它以保持更新

返回此.db.list(此.BASE_路径).snapshotChanges().subscribe(
项目=>{
返回item.map(a=>{
var p=新计划;
p、 key=a.payload.key;
p、 name=a.payload.child(this.name.val();
p、 descripton=a.payload.child(this.descripton.val();
p、 isPublic=a.payload.child(this.isPublic.val()='false'?false:true;
返回p;
})
}

);您在模板中使用过asyncpipe吗?如果是这样,您就不需要在ts类上订阅snapshotChanges()。asyncPipe将发挥神奇的作用

您在模板中使用过asyncPipe吗?如果是这样,您就不需要在ts类上订阅snapshotChanges()。asyncPipe将实现这一神奇功能

而不是
订阅
。您应该使用
.pipe
方法和
映射
操作符。如前所述,您不能在订阅上使用
async
模板管道:

return this.db.list<Plan>(this.BASE_PATH).snapshotChanges().pipe(
  map((items) => items.map(a => {
    const p = new Plan;
    p.key = a.payload.key;
    p.name = a.payload.child(this.NAME).val();
    p.descripton = a.payload.child(this.DESCRIPTON).val();
    p.isPublic = a.payload.child(this.ISPUBLIC).val() == 'false' ? false : true;

    return p;
  }))
);
返回此.db.list(此.BASE_路径).snapshotChanges().pipe(
map((items)=>items.map(a=>{
const p=新计划;
p、 key=a.payload.key;
p、 name=a.payload.child(this.name.val();
p、 descripton=a.payload.child(this.descripton.val();
p、 isPublic=a.payload.child(this.isPublic.val()='false'?false:true;
返回p;
}))
);

您应该使用
.pipe
方法和
映射
操作符,而不是
订阅
。如前所述,您不能在订阅上使用
async
模板管道:

return this.db.list<Plan>(this.BASE_PATH).snapshotChanges().pipe(
  map((items) => items.map(a => {
    const p = new Plan;
    p.key = a.payload.key;
    p.name = a.payload.child(this.NAME).val();
    p.descripton = a.payload.child(this.DESCRIPTON).val();
    p.isPublic = a.payload.child(this.ISPUBLIC).val() == 'false' ? false : true;

    return p;
  }))
);
返回此.db.list(此.BASE_路径).snapshotChanges().pipe(
map((items)=>items.map(a=>{
const p=新计划;
p、 key=a.payload.key;
p、 name=a.payload.child(this.name.val();
p、 descripton=a.payload.child(this.descripton.val();
p、 isPublic=a.payload.child(this.isPublic.val()='false'?false:true;
返回p;
}))
);

好的,我没有意识到这一点。将代码保留到snapShotChanges(),然后使用asyncPipe。。看看结果。如果可以,请告诉我。好的,我没有意识到这一点。将代码保留到snapShotChanges(),然后使用asyncPipe。。看看结果。让我知道它是否有效