属性“ cordova”在“窗口”类型上不存在。 :离子型

时间:2018-08-24 13:30:17

标签: cordova ionic-framework ionic2 ionic3 cordova-plugins

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

我还安装了typings,但仍然出现此错误。我该如何解决?

4 个答案:

答案 0 :(得分:3)

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

一种方法是声明类型window的{​​{1}}属性,如下所示:

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

答案 1 :(得分:2)

另一种解决方案是更改

window.cordova

window['cordova']

答案 2 :(得分:0)

Cordova仅在设备上执行,而不在浏览器中执行。在浏览器中查看生成时避免错误的方法是将Cordova命令包装在平台if语句中。例如:

import { Platform } from 'ionic-angular';
import { InAppBrowser } from '@ionic-native/in-app-browser';

constructor( private platform: Platform, private iab: InAppBrowser ) {
    this.platform.ready().then(function () {
        if (platform.is('cordova')) {
            // your code, eg:
            this.iab.create('http://google.com/', '_blank');
        }
    });
}

答案 3 :(得分:0)

在打字稿4中,tslint不再喜欢<any>演员表。

现在似乎更喜欢这个。

 var browserRef = (window as any).cordova.InAppBrowser.open();