在我的代码中,我得到的错误为Property 'cordova' does not exist on type 'Window'.
这是我得到错误的地方
var browserRef = window.cordova.InAppBrowser.open()
我还安装了typings
,但仍然出现此错误。我该如何解决?
答案 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();