Мое приложение не определяет ориентацию, когда я открываю приложение, у меня есть метод, который получает ориентацию, и я вызываю его, когда представление загружается, но оно ничего не делает, это мой код:
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, кажется, работает нормально.