将API数据作为Observable从服务传递>支付组件> invoice组件返回0或未定义

时间:2018-01-22 14:48:23

标签: angular http typescript rxjs

我创建了一个API服务,它从Stripe返回一个transactionID。我想将该事务ID从兄弟组件“Payment”传递给兄弟组件“Invoice”。 Invoice-component有一个下载链接,需要transactionID。我对RxJS lib相当新,但我认为我得到了BehaviorSubject的重点。

预期的行为是什么:

当我输入payment-component和buy and item时,StripeAPI返回一个transactionID。路由器导航到/ invoice组件,来自payment-component的上述TransactionID应作为Observable(或任何类型的变量)传递给该组件。

结果:

我使用BehaviorSubject和一个从中返回值的函数设置服务。当我在我的支付组件中调用并订阅该功能时,它工作正常。当我在兄弟组件中执行此操作时,它将返回默认值(0)。

代码:

服务:

  private transId = new BehaviorSubject<any>(0);
  cast = this.transId.asObservable();


  sendTransId(transId: any) {
    this.transId.next(transId);
  }

付款部分:

ngOnInit() {
    this.paymentSrv.cast
      .subscribe(data => {
      this.transId = data);
    console.log(this.transId);
   }
  }



pay(item) {
    this.paymentSrv.buyStory(storyId)
      .subscribe(payment => {
          console.log(payment.Transaction.id);
          const transactionID = payment.Transaction.id;
          this.paymentSrv.sendTransId(transactionID);
        }
      })
  }

发票组件(兄弟):

ngOnInit() {
    this.paymentSrv.cast
      .subscribe(data => this.transId = data);
}

这是应该使用transID调用的函数:

seeInvoice(transactionID) {
    window.location.replace(`test-platform/invoice/${transactionID}`);
  }

0 个答案:

没有答案