Angular Ionic 2 cordova InAppBrowser browser.close()不是函数

Angular Ionic 2 cordova InAppBrowser browser.close()不是函数,angular,ionic-framework,Angular,Ionic Framework,我在我的ionic应用程序中集成了一个支付网关,其中我在服务器端使用node js。点击按钮,我将使用ionic native InApp Browser将用户重定向到支付网关页面,然后我将收听url事件。当支付成功时,浏览器将重定向到成功url,否则将重定向到失败url。基于此,我正在处理应用程序中的UI。我的问题是,当我侦听成功/失败的url并调用关闭浏览器事件时,我会收到此错误 未捕获类型错误:this.browser.close不是函数 我也尝试了hide()方法,但得到了相同的错误。

我在我的ionic应用程序中集成了一个支付网关,其中我在服务器端使用node js。点击按钮,我将使用ionic native InApp Browser将用户重定向到支付网关页面,然后我将收听url事件。当支付成功时,浏览器将重定向到成功url,否则将重定向到失败url。基于此,我正在处理应用程序中的UI。我的问题是,当我侦听成功/失败的url并调用关闭浏览器事件时,我会收到此错误

未捕获类型错误:this.browser.close不是函数

我也尝试了hide()方法,但得到了相同的错误。 下面是我的代码

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Http } from '@angular/http';
import { InAppBrowser, InAppBrowserEvent } from '@ionic-native/in-app-browser';
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  event : any;
  browser:any;
  failed : boolean = false;
  success : boolean = false;
  constructor(public navCtrl: NavController, private http: Http,private iab: InAppBrowser) {

  }

  payment(){
    this.browser = this.iab.create('http://192.168.0.59:3000/post').on("loadstop")
     .subscribe((ev: InAppBrowserEvent) => {

              if(ev.url == "http://192.168.0.59:3000/failure"){
                console.log("payment failed");
                this.failed = true;
                this.closeBrowser();
              }else if(ev.url == "http://192.168.0.59:3000/success"){
                console.log("payment success");
                this.success = true;
              }

          });

      }

      closeBrowser(){
        this.browser.close();
      }

    }
我还在一台真正的设备上测试应用程序,这样就不会有任何cordova或平台问题……请告诉我我犯了什么错误。
正确的描述和答案将对我以后的参考非常有帮助。

尝试在构造函数中添加以下行:

this.browser = this.iab.create('http://192.168.0.59:3000/post');
您也可以将const用于此目的,如:

const browser = this.iab.create('http://192.168.0.59:3000/post');
那么,在付款方式上呢

this.browser.on("loadstop")
.subscribe((ev: InAppBrowserEvent) => {
    // check conditions according to logic
});
如果在构造函数中使用
const browser
,则只需使用browser.on()。然后在closeBrowser()方法中,
this.browser.close()将起作用


检查

是否有效,但问题是什么。。。只需将this.browser更改为const browser,它就工作了。区别是什么……应用程序内浏览器API需要它对实例保持不变。最后,您是在构造函数中使用它,还是在前面相同的位置(方法内部)使用它?通常,const是在类的顶部声明的(以便在类级别访问),我在payment()方法中的同一位置使用了它。。。非常感谢你