因此,在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(); }
});
}
答案 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();}
});