Ionic 2 ScreenOrientation插件更改

时间:2017-01-05 03:39:17

标签: cordova typescript ionic2 cordova-plugins screen-orientation

我需要你的帮助:两个月前,我的Ionic 2应用程序运行正常,使用ScreenOrientation cordova插件,代码如下:

window.addEventListener('orientationchange', ()=>{
  console.info('DEVICE ORIENTATION CHANGED!');
  console.debug(ScreenOrientation.orientation);
  if(ScreenOrientation.orientation.type.indexOf('landscape') !== -1){
    this.screenOrientationIsPortrait = false;
  } else if(ScreenOrientation.orientation.type.indexOf('portrait') !== -1){
    this.screenOrientationIsPortrait = true;
  }
});

在新的笔记本电脑中,我安装了最新的Ionic 2版本,以及最新版本的cordova ScreenOrientation插件,并使用相同的应用程序代码,我在编译时遇到了这个错误:

  

'string'类型中不存在属性'type'。

我尝试使用ScreenOrientation插件的github存储库中的示例:

window.addEventListener('orientationchange', ()=>{
  console.info('DEVICE ORIENTATION CHANGED!');
  console.debug(ScreenOrientation.orientation);
  if(screen.orientation.type.indexOf('landscape') !== -1){
    this.screenOrientationIsPortrait = false;
  } else if(screen.orientation.type.indexOf('portrait') !== -1){
    this.screenOrientationIsPortrait = true;
  }
});

但是使用该代码,我在编译时也遇到了这个错误:

  

“屏幕”类型中不存在属性“方向”

最近,Ionic 2和ScreenOrientation插件都进行了更新。根据我的研究,它出现了TypeScript错误,而不是更新版本冲突。

我怎么知道什么是错的?我该怎么调试才能找到这个新错误的原因?有任何想法吗?在此先感谢,感谢您的帮助。

Github repo示例:https://github.com/apache/cordova-plugin-screen-orientation

Ionic 2例子:https://ionicframework.com/docs/v2/native/screen-orientation/

1 个答案:

答案 0 :(得分:0)

您实际上可以在不添加插件的情况下检测屏幕方向更改。使用类型窗口的属性方向。

window.addEventListener('orientationchange', () => {
      console.info('DEVICE ORIENTATION CHANGED!');
      console.debug(ScreenOrientation.orientation);
      switch (window.orientation) {
        case -90:
        case 90:
              console.log("Landscape orientation");
              this.screenOrientationIsPortrait = true;
              break;
        case 0:
             console.log("Landscape orientation");
              this.screenOrientationIsPortrait = false;
             break;
      }      
    });