首页 > 解决方案 > “窗口”类型上不存在属性“科尔多瓦”。: 离子

问题描述

在我的代码中,我收到了错误,因为Property 'cordova' does not exist on type 'Window'. 这是我收到错误的地方 var browserRef = window.cordova.InAppBrowser.open()

我也安装了,typings但我仍然收到此错误。我该如何解决这个问题?

标签: cordovaionic-frameworkionic2ionic3cordova-plugins

解决方案


这只是Typescript的抱怨,因为cordova它不是window对象定义的一部分。有几种方法可以避免该错误:

一种方法是声明windowtype 的属性any,如下所示:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

declare let window: any; // <--- Declare it like this

@Component({
  selector: 'page-demo',
  templateUrl: 'demo.html'
})
export class DemoPage {

  constructor(public navCtrl: NavController, ...) { }

  public yourMethod(): void {
    var browserRef = window.cordova.InAppBrowser.open(); // <--- and use it like this
  }

}

另一种方法是将window对象转换为any您要使用它的同一语句中的类型:

var browserRef = (<any>window).cordova.InAppBrowser.open();
// or
var browserRef = (window as any).cordova.InAppBrowser.open();

如果您不想使用,您还可以根据要调用的方法any定义对象的类型:window

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

declare let window: {
  cordova: {
    InAppBrowser: {
      open: () => {};
    }
  }
}

@Component({
  selector: 'page-demo',
  templateUrl: 'demo.html'
})
export class DemoPage {

  constructor(public navCtrl: NavController, ...) { }

  public yourMethod(): void {
    var browserRef = window.cordova.InAppBrowser.open();
  }

}

推荐阅读