Как вызвать функцию компонента изнутри обратного вызова для угловых 2+ (razorpay)? - PullRequest
0 голосов
/ 18 октября 2019

Итак, я пытаюсь вызвать функцию из ответа на обратный вызов API для платежного приложения razorpay. Я не могу использовать «this» для вызова функций внутри компонента, так как он находится внутри вложенной функции в обработчике. Как я могу вызвать функцию handle_response () из "обработчика" обратного вызова?

myComponent.ts

var options = {
    "amount": 100, 
    "name": "ABC",
    "currency": "USD",
    "handler": function (response){
        console.log(response);//this returns the expected value
        this.handle_response(response); //does not work as cannot identify 'this'
    }
};
var rzp1 = new this.winRef.nativeWindow.Razorpay(options);
rzp1.open();

handle_response(_response){....}

1 Ответ

2 голосов
/ 18 октября 2019

Вы хотите использовать метод bind вашей функции или синтаксис жирной стрелки из машинописи. Это будет либо:

let options = {
    "amount": 100, 
    "name": "ABC",
    "currency": "USD",
    "handler": function (response){
        console.log(response);//this returns the expected value
        this.handle_response(response); //does not work as cannot identify 'this'
    }.bind(this)
};
let rzp1 = new this.winRef.nativeWindow.Razorpay(options);
rzp1.open();

handle_response(_response){....}

ИЛИ

let options = {
    "amount": 100, 
    "name": "ABC",
    "currency": "USD",
    "handler": (response) => {
        console.log(response);//this returns the expected value
        this.handle_response(response); //does not work as cannot identify 'this'
    }
};
let rzp1 = new this.winRef.nativeWindow.Razorpay(options);
rzp1.open();

handle_response(_response){....}
...