Angular 离子2窗口对象不';t Transfile,与WebSql window.openDatabase(..)有关的问题
我在使用Ionic2中的Angular 离子2窗口对象不';t Transfile,与WebSql window.openDatabase(..)有关的问题,angular,typescript,cordova-plugins,ionic2,Angular,Typescript,Cordova Plugins,Ionic2,我在使用Ionic2中的窗口对象时遇到问题 此问题遵循中所述的相同想法 我发现了一个关于window对象的非常有用的输入。然而,我确实有一个问题 基于平台的条件,如果cordova plugin sqlite在真实设备上运行,我想使用它;如果它在浏览器(Chrome)上运行,我想使用WebSql。 我使用一个服务获取DB连接,在关于该服务的类中,我创建了一个函数,用于根据平台类型的条件设置我的服务的DB值(该函数在[my project]\src\app.components.ts]中调用):
窗口
对象时遇到问题
此问题遵循中所述的相同想法
我发现了一个关于window
对象的非常有用的输入。然而,我确实有一个问题
基于平台的条件,如果cordova plugin sqlite在真实设备上运行,我想使用它;如果它在浏览器(Chrome)上运行,我想使用WebSql。
我使用一个服务获取DB连接,在关于该服务的类中,我创建了一个函数,用于根据平台类型的条件设置我的服务的DB值(该函数在[my project]\src\app.components.ts]中调用):
由于函数不可传输,我在运行“Ionic serve”时收到一个错误,表示:
类型“window”上不存在属性“openDatabase”
我真正不明白的是:如果我注释://this.db=window.openDatabase(“ionic2BrowserDev”,“1.0”,“5*1024*1024”)代码>
那么它就可以透明了。在我的浏览器中,console.info(窗口)
显示了窗口
对象下所有属性的列表,我可以看到它包括openDatabase
所以我真的很困惑为什么它不能传输
有人知道我做错了什么吗?我知道,发布一个问题,然后马上给出答案是不受欢迎的做法
但我确实解决了我的问题。这就有了解决办法。要实现给定解决方案中解释的windowService
,完全可以让它正常工作。它被传输,openDatabase()获得了成功
多亏了@toskv和@sebaferreras
getDummyDbForBrowerDev(platform){
console.log('SqlSettingsService() getDummyDbForBrowerDev starts');
if(platform.is('core')){
console.info(window);
this.db = window.openDatabase("ionic2BrowserDev","1.0","",5*1024*1024);
}
}