要将Angularfire中的snapshotChanges的类型始终更改为"value",可以使用pipe操作符和map操作符来转换Observable的类型。
以下是一个示例代码:
import { Component } from '@angular/core';
import { AngularFireDatabase } from '@angular/fire/database';
import { map } from 'rxjs/operators';
@Component({
selector: 'app-root',
template: `
-
{{ item.name }}
`,
})
export class AppComponent {
items$;
constructor(private db: AngularFireDatabase) {
this.items$ = this.db
.list('items')
.snapshotChanges()
.pipe(
map((changes) =>
changes.map((c) => ({
key: c.payload.key,
...c.payload.val(),
}))
)
);
}
}
在上面的代码中,我们使用snapshotChanges()
方法获取Angularfire中的数据快照变化。然后,我们使用管道操作符pipe()
和map()
来转换Observable的类型。
在map()
操作符中,我们使用changes.map()
来遍历快照变化并将其转换为我们需要的类型。在这个示例中,我们将每个快照变化的payload
属性的key
和val()
值合并到一个新的对象中。
最后,我们将转换后的Observable赋值给items$
变量,然后在模板中使用async
管道来订阅和显示数据。
请注意,上述示例假设您已经正确设置了Angularfire和Firebase的配置。