【问题标题】:Angular 2 Array Subject .next() not invoking another component's observerAngular 2 Array Subject .next() 不调用另一个组件的观察者
【发布时间】:2017-03-18 20:41:08
【问题描述】:

我使用 firebase 作为我的后端。

在 data.service.ts 内部,我创建了一个 Subject 数组,它将由应用程序初始化时的 firebase 观察者填充:

private orders = new Subject<any>();
orders$ = this.orders.asObservable();

firebase.database().ref(this.fbDataPath).on('child_added', (childSnapshot) => {
  this.orders.next(
    {
      key: childSnapshot.key,
      name: childSnapshot.val().name,
      items: childSnapshot.val().items
    }
  )
})

然后我为 DataService 提供一个单独的目录组件并订阅其可观察的订单:

DataService.orders$.subscribe(
  order => {
    console.log('subscribe hit')
  })

我似乎无法让监听器组件在下一个触发。我为布尔 isLoggedIn 做了这项工作,在这种情况下我一定遗漏了一些东西。谢谢!

【问题讨论】:

    标签: javascript angularjs angular firebase rxjs


    【解决方案1】:

    这可能是因为您在闭包中使用了this。从this.orders.next() 中删除this

    【讨论】:

    • 这不是问题,因为数组函数正确捕获this
    • 哎呀,我没有将自己标记为已回答……这似乎不起作用。但是,当我从 firebase 关闭中删除它时,订阅至少会通过......所以我可能不得不推出自己的 firebase 观察者,除非还有其他东西?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2017-06-15
    • 2021-04-13
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多