Ionic 4:设置根页面
Ionic 4 : Setting root page
在 Ionic 4 中,我找不到合适的方法来替换启动画面后的默认根页面。以下是默认设置。
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
});
找到解决方案。首先创建你想做的页面作为根页面
ionic generate page pagename
在app.component.ts
import { Router } from '@angular/router';
在构造函数中添加
private router : Router
然后初始化
initializeApp() {
this.platform.ready().then(() => {
this.router.navigateByUrl('pagename');
this.statusBar.styleDefault();
this.splashScreen.hide();
});
}
我不建议使用这种方法。
虽然这可行,但 Ionic 4 现在依赖于原生 Angular 模块,这包括 Angular 路由器。
要设置根页面,您需要在路由器模块中设置您的应用程序路由。
如果你不知道这是怎么做到的,please click here to visit the angular docs
当您使用 ionic cli 创建项目时,会自动为您添加路由模块。
以下是在您的情况下如何实施;
第 1 步:
在你的 index.html
检查 <base href="/" >
是否已添加到 index.html 文件,如果不存在请添加。
第 2 步:
在您的 app.module.ts 文件中
在文件的顶部,导入 routerModule
import { RouterModule, Routes } from '@angular/router';
配置您的应用程序路由,假设您已经创建了一个名为 'home'
的页面
const routes: Routes = [
{
path: '',
redirectTo: 'home',
pathMatch: 'full'
},
{
path: 'home',
loadChildren: './home/home.module#HomePageModule'
}
];
将 RouterModule 添加到 NgModule 的导入数组中
@NgModule({
imports: [RouterModule.forRoot(routes)],
...
})
第 3 步:
在你的app.component.html
将路由器插座添加到 app.component.html
<ion-router-outlet></ion-router-outlet>
如果你有一个 Angular 路由器,这是程序:
在app.component中:
添加导入:
import {NavController} from '@ionic/angular';
import {ActivatedRoute} from '@angular/router';
// in the constructor:
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private route: ActivatedRoute,
private navController: NavController,
...
) {
this.initializeApp();
....
if ( this.route.snapshot['_routerState'].url !== '/theRoute') {
this.navController.navigateRoot('/theRoute')
.then();
}
....
就这些。
这有效您的逻辑和重定向,但是,如果您在同一页面中,请不要重定向。
在 Ionic 3 中,我们在用于路由的 NavController 中使用了 push、pop 和 setRoot 方法,如下所示:
this.navCtrl.push('list');
this.navCtrl.pop('home');
this.navCtrl.setRoot('HomePage');
现在改为
this.navCtrl.navigateForward('/list');
this.navCtrl.navigateBack('/home');
this.navCtrl.navigateRoot('/details');
我找到了解决方案。下面给出
1.For 生根:
app.component.ts
import { Component } from '@angular/core';
import { Platform } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { Router } from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss']
})
export class AppComponent {
rootPage: any = 'register'; //<--- Just change the 'register' into your page name
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private router : Router
) {
this.initializeApp();
}
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
});
}
}
2。对于导航:
如果只是导航到另一个页面,请使用下面的代码
initializeApp() {
this.platform.ready().then(() => {
this.router.navigateByUrl('Your_page_name');
this.statusBar.styleDefault();
this.splashScreen.hide();
});
在 Ionic 4 中,我找不到合适的方法来替换启动画面后的默认根页面。以下是默认设置。
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
});
找到解决方案。首先创建你想做的页面作为根页面
ionic generate page pagename
在app.component.ts
import { Router } from '@angular/router';
在构造函数中添加
private router : Router
然后初始化
initializeApp() {
this.platform.ready().then(() => {
this.router.navigateByUrl('pagename');
this.statusBar.styleDefault();
this.splashScreen.hide();
});
}
我不建议使用这种方法。
虽然这可行,但 Ionic 4 现在依赖于原生 Angular 模块,这包括 Angular 路由器。
要设置根页面,您需要在路由器模块中设置您的应用程序路由。
如果你不知道这是怎么做到的,please click here to visit the angular docs
当您使用 ionic cli 创建项目时,会自动为您添加路由模块。
以下是在您的情况下如何实施;
第 1 步:
在你的 index.html
检查 <base href="/" >
是否已添加到 index.html 文件,如果不存在请添加。
第 2 步:
在您的 app.module.ts 文件中
在文件的顶部,导入 routerModule
import { RouterModule, Routes } from '@angular/router';
配置您的应用程序路由,假设您已经创建了一个名为 'home'
的页面const routes: Routes = [
{
path: '',
redirectTo: 'home',
pathMatch: 'full'
},
{
path: 'home',
loadChildren: './home/home.module#HomePageModule'
}
];
将 RouterModule 添加到 NgModule 的导入数组中
@NgModule({
imports: [RouterModule.forRoot(routes)],
...
})
第 3 步:
在你的app.component.html
将路由器插座添加到 app.component.html
<ion-router-outlet></ion-router-outlet>
如果你有一个 Angular 路由器,这是程序:
在app.component中:
添加导入:
import {NavController} from '@ionic/angular';
import {ActivatedRoute} from '@angular/router';
// in the constructor:
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private route: ActivatedRoute,
private navController: NavController,
...
) {
this.initializeApp();
....
if ( this.route.snapshot['_routerState'].url !== '/theRoute') {
this.navController.navigateRoot('/theRoute')
.then();
}
....
就这些。
这有效您的逻辑和重定向,但是,如果您在同一页面中,请不要重定向。
在 Ionic 3 中,我们在用于路由的 NavController 中使用了 push、pop 和 setRoot 方法,如下所示:
this.navCtrl.push('list');
this.navCtrl.pop('home');
this.navCtrl.setRoot('HomePage');
现在改为
this.navCtrl.navigateForward('/list');
this.navCtrl.navigateBack('/home');
this.navCtrl.navigateRoot('/details');
我找到了解决方案。下面给出
1.For 生根:
app.component.ts
import { Component } from '@angular/core';
import { Platform } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { Router } from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss']
})
export class AppComponent {
rootPage: any = 'register'; //<--- Just change the 'register' into your page name
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private router : Router
) {
this.initializeApp();
}
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
});
}
}
2。对于导航:
如果只是导航到另一个页面,请使用下面的代码
initializeApp() {
this.platform.ready().then(() => {
this.router.navigateByUrl('Your_page_name');
this.statusBar.styleDefault();
this.splashScreen.hide();
});