如何在Angular 2+组件模板中检测Stripe付款弹出窗口是否已关闭?

时间:2018-01-30 21:18:42

标签: angular stripe-payments

因此,在Angular 4控制器中,我有一种名为' openCheckout'这意味着要显示Stripe付款弹出窗口。正如您在Stripe文档中所熟悉的那样,在 handler.open 中,有一个选项“已关闭”'它会触发一个匿名函数,即触发javscript函数。

我的问题是:如何让它触发组件方法?即我打电话给'doSomethingWhenStripePopUpCloses()'。

我只需要我的组件知道Stripe弹出窗口何时关闭。在这方面的任何建议也欢迎。

openCheckout(productName: string, amount:number, tokenCallback) {
let stripe_amount_in_pennies = amount+'00';
let a = parseInt(stripe_amount_in_pennies);
amount = a;
let handler = (<any>window).StripeCheckout.configure({
    key: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX',
    locale: 'auto',
    token: tokenCallback
});

handler.open({
    name: 'test',
    description: productName,
    zipCode: false,
    currency: 'gbp',
    amount: amount,
    panelLabel: "Pay {{amount}}",
    allowRememberMe: false,
    email:this.user.email,
    closed: function() { doSomethingWhenStripePopUpCloses(); } 
});
}    

1 个答案:

答案 0 :(得分:1)

这就是答案。

在Stripe自己的代码中触发Angular类方法,而不是使用:

function(){doSomethingWhenStripePopUpCloses();}

您应该使用箭头功能:

()=>{this.doSomethingWhenStripePopUpCloses();

在代码中

handler.open({
name: 'test',
description: productName,
zipCode: false,
currency: 'gbp',
amount: amount,
panelLabel: "Pay {{amount}}",
allowRememberMe: false,
email:this.user.email,
closed: ()=>{this.doSomethingWhenStripePopUpCloses();} 
});