Мое приложение состоит из 2 страниц, которые называются login
, home
и других лениво загруженных modules
.
В app.component.ts
условие записывается так, что если localStorage
пусто, оно должно перенаправляться на страницу login
, иначе оно должно перенаправляться на страницу home
. Затем с домашней страницы пользователя будут перенаправлены другие лениво загруженные модули
app.component.ts
import { Component } from '@angular/core';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { Platform, NavController } from '@ionic/angular';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html'
})
export class AppComponent {
constructor(
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private platform: Platform,
public navCtrl: NavController,
) {
this.initializeApp();
if (localStorage.getItem('token') !== null) {
this.navCtrl.navigateRoot('/home');
} else {
this.navCtrl.navigateRoot('/login');
}
}
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
this.platform.ready().then(() => {
});
});
}
}
приложение-routing.module.ts
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{path: 'home',loadChildren: './home/home.module#HomePageModule'},
{ path: 'login', loadChildren: './login/login.module#LoginPageModule' },
{ path: '', loadChildren: './nav-bar/nav-bar.module#NavBarPageModule' }, <===== Lazy loaded module
{ path: '', loadChildren: './nav-bar-provider/nav-bar-provider.module#NavBarProviderPageModule' }, <===== Lazy loaded module
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule { }
Это условие отлично работает. Затем на странице home
я написал код для выхода из приложения, нажав дважды, как показано ниже:
home.page.ts
import { Component , OnInit} from '@angular/core';
import { Platform } from '@ionic/angular';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage implements OnInit {
subscription;
constructor(public platform: Platform) {}
ngOnInit() {}
ionViewDidEnter() {
this.subscription = this.platform.backButton.subscribe(() => {
(navigator as any).app.exitApp();
});
}
ionViewDidLeave() {
this.subscription.unsubscribe();
}
}
Теперь проблема заключается в следующем: On double tap in home page,the app will close, But on single tap it will routed 1st lazy loaded module(i,e NavBarPageModule). How can avoid this?
Для этой проблемы я попытался передать router-path
лениво загруженным модулям следующим образом:
const routes: Routes = [
{path: 'home',loadChildren: './home/home.module#HomePageModule'},
{ path: 'login', loadChildren: './login/login.module#LoginPageModule' },
{ path: 'nav-bar', loadChildren: './nav-bar/nav-bar.module#NavBarPageModule' },
{ path: 'nav-bar-provider', loadChildren: './nav-bar-provider/nav-bar-provider.module#NavBarProviderPageModule' },
];
Тогда мне не удалось направиться к lazy loaded modules
со страницы home
.
Я просто хочу закрыть приложение из home page
одним нажатием.