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

时间:2017-11-24 07:14:34

标签: angular ionic-framework

我正在我的离子应用程序中集成支付网关,我在服务器端使用节点js。点击按钮,我使用离子本机inAppBrowser将用户重定向到支付网关页面,之后我正在收听网址事件。付款成功后,浏览器将重定向到成功URL,否则它将重定向到失败的URL。基于此,我正在处理应用程序中的UI。我的问题是,当我听到成功/失败的网址并调用关闭浏览器事件时,我收到此错误。

  

未捕获的TypeError: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或平台问题......请告诉我我犯的是什么错误。 对答案的正确描述对我将来的参考文献非常有帮助。

1 个答案:

答案 0 :(得分:3)

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

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();将起作用。

检查 Official Documentation