I have a cordova +angular+ typescript project in which I'm trying to use the juspay-ec-sdk-plugin for Cordova. I've tried the solutions at Cordova plugin in Angular 4 Typescript application and cordova plugin cannot resolve in typescript but with no success. How can I refer to this plugin in my typescript code? PS: I've tried installing ngCordova typings but it didn't work.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
I like in my main component app.component.ts control de deviceready and use a service to "store" the "cordova"
Some like
declare var cordova: any; //<--declare "cordova"
declare var window:any; //<--declare "window"
//An enum of events
export enum CordovaEvent {BackButton,Resume,Pause}
//In constructor inject our "CordovaService", it's only to store cordova
constructor(private cordovaService: CordovaService){}
ngAfterViewInit() {
document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
}
onDeviceReady() {
..here I have "cordova".., we can, e.g.
..and I have the pluggings...
cordova.getAppVersion.getVersionNumber().then(version => {
..make something with "version"
});
this.cordovaService.cordova=cordova //<--store "cordova" in a service
this.cordovaService.isCordoba = true; //<--store in a variable in a service if
//I'm in cordova or not
// we can control the 'pause','resume',backbutton...
document.addEventListener('pause', this.onPause.bind(this), false);
document.addEventListener('resume', this.onResume.bind(this), false);
document.addEventListener("backbutton", this.onBackKeyDown.bind(this), false);
};
onPause() {
//If our service has a function sendEvent
this.cordovaService.sendEvent(CordovaEvent.Pause);
};
onResume() {
this.cordovaService.sendEvent(CordovaEvent.Resume);
};
onBackKeyDown(e) {
this.cordovaEventService.sendEvent(CordovaEvent.BackButton);
e.preventDefault();
e.stopPropagation();
};
//Our cordovaService
export class CordovaService {
private listeningSource:Subject<CordovaEvent>=new Subject<CordovaEvent>();
cordovaEvent:Observable<CordovaEvent>=this.listeningSource.asObservable();
isCordoba:boolean=false;
cordova:any;
constructor() {
}
sendEvent(evento:CordovaEvent)
{
this.listeningSource.next(evento);
}
}