Angular 在Observable-Ionic 4中添加一个元素

Angular 在Observable-Ionic 4中添加一个元素,angular,firebase,google-cloud-firestore,ionic4,Angular,Firebase,Google Cloud Firestore,Ionic4,我是爱奥尼亚语的初学者,并遵循讲师的教程。 我有一个爱奥尼亚4购物应用程序,用户可以添加一个项目到他们的愿望清单。我只是将项目id添加到firebase firestore中的愿望列表集合中。 现在,当我检索愿望列表并希望在愿望列表中显示项目时,我从愿望列表集合中获取项目ID,然后使用这些项目ID从项目集合中获取项目。 我被困在将项目添加到另一个可观察或数组的点上,这样我就可以在愿望列表页面上显示这些项目。我试着看看其他的解决方案,他们说我必须订阅或做些什么,但我发现很难理解,所以我把我的问题贴

我是爱奥尼亚语的初学者,并遵循讲师的教程。 我有一个爱奥尼亚4购物应用程序,用户可以添加一个项目到他们的愿望清单。我只是将项目id添加到firebase firestore中的愿望列表集合中。 现在,当我检索愿望列表并希望在愿望列表中显示项目时,我从愿望列表集合中获取项目ID,然后使用这些项目ID从项目集合中获取项目。 我被困在将项目添加到另一个可观察或数组的点上,这样我就可以在愿望列表页面上显示这些项目。我试着看看其他的解决方案,他们说我必须订阅或做些什么,但我发现很难理解,所以我把我的问题贴出来。下面是我的代码

项目的接口

export interface Item { 
  id?: string, 
  name: string, 
  image: string, 
  price: number
}
愿望列表、项目、项目集合、愿望列表集合和愿望列表项的声明

  private items: Observable<Item[]>;
  private itemCollection: AngularFirestoreCollection<Item>;

  private wishlist: Observable<any>;
  private wishlistCollection: AngularFirestoreCollection<any>;
  private wishlistItems : Observable <Item[]>; 
给这个

{image: "mac.jpg", name: "MAC Cosmetics set", price: 35, id: "3w1HEZ8X11jldlcWkDDx"}
image: "mac.jpg"
name: "MAC Cosmetics set"
price: 35
id: "3w1HEZ8X11jldlcWkDDx"
如何将项目添加到
wishlistItems
observable

方法
getItem()
返回一个
可观察的
,它用于异步代码中,以便能够发出数据。然后,您可以使用
subscribe
方法订阅该可观察对象并接收数据:

this.getItem(item.id).subscribe(items => {
    console.log(items);
    this.
 });
代码中的示例:

getWishlistItems(){
    this.wishlist.forEach(item =>{ 
    this.getItem(item.id).subscribe(items => {
       console.log(items);
       this.wishlistItems = items;
      });
    });
  }
这是在wishlist页面的ngInit()中工作的实际代码

this.crud.wishlist.subscribe(item =>{
      item.forEach(val =>{
        this.crud.getItem(val.id).subscribe(items => {
          this.wishlist.push(items);
        });
      });
    });

因此,将
this.wishlistItems
的类型更改为any,并将方法的类型更改为
getWishListItems()
。我不确定您为什么要返回,但通常当您订阅
可观察的
以获取值时,您只需在模板中显示这些值

什么是item do
console.log(item)
@PeterHaddad在EDIT中添加了console.log结果我正在服务中执行所有这些操作,然后希望将愿望列表项发送到相应的愿望列表页面。这就是为什么我要返回itAlso,一个问题。items一次只会有一个项目,这不是吗。wishlistItems=项目会不断更改wishlistItems的值,而不是真正保存我的所有项目?在服务中,你只附加一个可观察项,然后在wishlist页面中,你将服务注入构造函数,然后订阅它。最好的办法是尝试它是否有效。我将代码添加到愿望列表页面的ngInit,而不是服务
{image: "mac.jpg", name: "MAC Cosmetics set", price: 35, id: "3w1HEZ8X11jldlcWkDDx"}
image: "mac.jpg"
name: "MAC Cosmetics set"
price: 35
id: "3w1HEZ8X11jldlcWkDDx"
this.getItem(item.id).subscribe(items => {
    console.log(items);
    this.
 });
getWishlistItems(){
    this.wishlist.forEach(item =>{ 
    this.getItem(item.id).subscribe(items => {
       console.log(items);
       this.wishlistItems = items;
      });
    });
  }
this.crud.wishlist.subscribe(item =>{
      item.forEach(val =>{
        this.crud.getItem(val.id).subscribe(items => {
          this.wishlist.push(items);
        });
      });
    });