Dans mon code, j'obtiens l'erreur sous la forme Property 'cordova' does not exist on type 'Window'.
C'est ici que j'obtiens l'erreur var browserRef = window.cordova.InAppBrowser.open()
J'ai également installé le typings
mais je reçois toujours cette erreur. Comment puis-je résoudre ça?
C'est juste TypeScript se plaignant parce que cordova
ne fait pas partie de la définition d'objet window
. Il existe plusieurs façons d'éviter cette erreur:
Une façon consiste à déclarer une propriété window
de type any
, comme ceci:
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
}
}
Une autre façon serait de convertir l'objet window
en type any
dans le même statament:
public anotherMethod(): void {
var browserRef = (<any>window).cordova.InAppBrowser.open();
}
Cordova s'exécute uniquement sur les appareils, pas dans le navigateur. Le moyen d'éviter les erreurs lors de l'affichage de votre build dans un navigateur consiste à encapsuler les commandes Cordova dans une instruction if de la plateforme. Par exemple:
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');
}
});
}