Ionic 4 не определяет ориентацию при открытии приложения - PullRequest
1 голос
/ 31 октября 2019

Мое приложение не определяет ориентацию, когда я открываю приложение, у меня есть метод, который получает ориентацию, и я вызываю его, когда представление загружается, но оно ничего не делает, это мой код:

import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx';
import { EventoDespacho } from './../../models/evento-despacho';
import { Component, OnInit } from '@angular/core';
import { StatusBarStyleService } from '../../utils/status-bar-style.service';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { Platform } from '@ionic/angular';
import { Subscription } from 'rxjs';
import { DespachoService } from 'src/app/api/despacho.service';

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss']
})
export class HomePage implements OnInit {
  isVertical: boolean;
  ngClasses: any;
  ngClassesButtonsCont: any;
  ngClassesButton: any;
  ngClassesSlider: any;
  imgServicios: string;
  imgTramites: string;
  imgLimpia: string;
  staticThis = this;
  backButtonSubscription: Subscription;
  titulo = 'Servicios Capital';

  constructor(
    private statusBarStyle: StatusBarStyleService,
    private statusBar: StatusBar,
    private platform: Platform,
    private screenOrientation: ScreenOrientation
  ) {}

  ngOnInit(): void {
    console.log('Home ngOnInit');
  }

  ionViewDidLoad() {
    this.addEventListeners();
    this.statusBarStyle.setDarkStatusBar(this.statusBar);
    this.isVertical = true;
    this.ngClasses = {};
    this.ngClassesButtonsCont = {};
    this.ngClassesButton = {};
    this.ngClassesSlider = {};
    this.imgServicios = '';
    this.imgTramites = '';
    this.imgLimpia = '';
    this.onOrientationChange(null); 
  }

  ionViewDidLeave() {
    this.removeEventListeners();
  }

  /**
   * Atiende el evento cuando se presiona el backbutton del dispositivo.
   */
  onBackButtonClick() {
    navigator['app'].exitApp();
  }

  /**
   * Agrega los listeners de esta página.
   */
  addEventListeners() {
    window.addEventListener('orientationchange', this.onOrientationChange);
    this.backButtonSubscription = this.platform.backButton.subscribe(
      this.onBackButtonClick
    );
  }

  /**
   * Remueve los listeners que pertenecen a esta página para evitar duplicidad.
   */
  removeEventListeners() {
    window.removeEventListener('orientationchange', this.onOrientationChange);
    this.backButtonSubscription.unsubscribe();
  }

  /**
   * Realiza cambios en íconos y clases de la pantalla al girar la pantalla.
   */
  onOrientationChange = event => {
    const orientation = screen.orientation.type.toString();

    this.isVertical = orientation.indexOf('portrait') >= 0;

    this.ngClasses = {
      'flex-c-col': this.isVertical,
      'flex-container-row': !this.isVertical
    };

    this.ngClassesButtonsCont = {
      'flex-container-row h-100': this.isVertical,
      'flex-c-col m-l-10': !this.isVertical
    };

    this.ngClassesButton = {
      'h-100': this.isVertical
    };

    this.ngClassesSlider = {
      'mw-50': !this.isVertical
    };

    if (this.isVertical) {
      this.imgServicios = '../../assets/images/BotonServiciosVertical.png';
      this.imgTramites = '../../assets/images/BotonTramitesVertical.png';
      this.imgLimpia = '../../assets/images/BotonLimpiaVertical.png';
    } else {
      this.imgServicios = '../../assets/images/BotonServicios.png';
      this.imgTramites = '../../assets/images/BotonTramites.png';
      this.imgLimpia = '../../assets/images/BotonLimpia.png';
    }
  }
}

Я пытался установить ориентацию с помощью this.screenOrientation.lock(this.screenOrientation.ORIENTATIONS.PORTRAIT_PRIMARY);, но это также не сработало. Одна вещь, которую я заметил, это то, что ngOnInit и ionViewDidLoad не работают, когда представление загружается, мне нужно перейти к другому представлению и вернуться к первому, чтобы эти события работали, может кто-нибудь помочь мне с этим? Ох, и это происходит только на iOS, Android, кажется, работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...