通過執行以下操作,我成功地在 Angular 中呈現了一個 Paypal 按鈕:
(window as any).paypal.Buttons({
createSubscription: function (data, actions) {
return actions.subscription.create({
'plan_id': 'XXXXX'
});
},
onApprove: function (data, actions) {
this.planService.subscribe(1, data.subscriptionID).subscribe(x => alert('SUCCESS'));
}
}).render('#paypal-button-container');
一切都按預期作業,但呼叫回呼時planService未定義,我明白為什么,但不知道如何修復。如何從 Javascript 回呼中呼叫 Typescript 函式?有什么建議嗎?
uj5u.com熱心網友回復:
您的實作缺少this參考,因此planService在相關背景關系中未定義。使用箭頭函式將當前this參考系結到函式:
(window as any).paypal.Buttons({
createSubscription: function (data, actions) {
return actions.subscription.create({
'plan_id': 'XXXXX'
});
},
onApprove: (data, actions) => { // arrow function to bind "this"
this.planService.subscribe(1, data.subscriptionID).subscribe(x => alert('SUCCESS'));
}
}).render('#paypal-button-container');
還有一件事需要注意:您可能想要檢查this.planService(假設是一個 Observable)是否在角度區域內運行。如果沒有(因為它是由第三方實作 (paypal) 觸發的),您可能會注意到模板不會相應更新(更改未被更改檢測拾取或更改檢測未按預期運行)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/535094.html
上一篇:通過角度指令禁用按鈕和輸入欄位
下一篇:角度嵌套回圈重復
