Как получить доступ к функции из переменной конфигурации в angular 10

#angular

#angular

Вопрос:

У меня есть объявление переменной, как показано ниже

     export class AppComponent implements OnInit {
  // constructor() { }
  config = {
    // replace this key with yours
    publicKey: "test_public_key_dc74e0fd57cb46cd93832aee0a390234",
    productIdentity: "1234567890",
    productName: "Drogon",
    productUrl: "http://gameofthrones.com/buy/Dragons",
    eventHandler: {
      onSuccess(payload) {
        // hit merchant api for initiating verfication
        console.log(payload);
        this.handleSuccessResponse(payload);
      },
      // onError handler is optional
      onError(error) {
        // handle errors
        console.log(error);
      },
      onClose() {
        console.log("widget is closing");
      }
    }
  };
  checkout = new KhaltiCheckout(this.config);

  ngOnInit() {}
  khaltiCheckout() {
    this.checkout.show({ amount: 1000 });
  }
  handleSuccessResponse(payload) {
    console.log(payload);
  }

  handleErrorResponse(payload) {
    console.log(payload);
  }
}
 

Здесь this.generateAlphaNumericValue(10) был успешно вызван, но функция this.handleSuccessResponse(полезная нагрузка) выдает ошибку как неопределенную функцию.
Как я могу вызвать это.handleSuccessResponse(полезная нагрузка) при успешном событии.

Комментарии:

1. Могу ли я увидеть код, где и как именно вы вызываете onSuccess функцию?

2. Напрямую передать функцию refrerence, т.е. onSuccess = this.handleSuccessResponse" или Использовать функцию arror, т.е. onSuccess => (payload) > { this.handleSuccessResponse(payload); },

3. @PankajParkar Я обновил код. Можете ли вы это проверить.

4. @Satpal прав, вы можете использовать функцию со стрелкой для хранения контекста класса компонента внутри onSuccess функции.

5. @Satpal onSuccess — это функция обратного вызова. Я не могу ни назначить, ни использовать функцию стрелки. Я должен вызвать функцию из функции onSuccess .

Ответ №1:

this.successR(payload); отсутствует в области видимости конфигурации, теряется из-за внутренней функции, поэтому измените ее следующим образом,

 export class AppComponent implements OnInit {
  constructor() {
    // Change
    var self = this;
    config = {
        // replace this key with yours
        publicKey: "test_public_key_dc74e0fd57cb46cd93832aee0a390234",
        productIdentity: "1234567890",
        productName: "Drogon",
        productUrl: "http://gameofthrones.com/buy/Dragons",
        eventHandler: {
          onSuccess(payload) {
            // Change
            self.successR(payload);
          },
          // onError handler is optional
          onError(error) {
            // handle errors
            console.log(error);
          },
          onClose() {
            console.log("widget is closing");
          }
        }
      };
      checkout = new KhaltiCheckout(this.config);
   }
}