Angularfire2快照更改订阅管道问题
我正在使用@angular/fire,我刚刚为数据库创建了snapshotChanges(),现在我尝试订阅它以保持更新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
返回此.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。。看看结果。让我知道它是否有效