个性化阅读
专注于IT技术分析

Ionic导航和路由

导航意味着用户如何在Ionic应用程序中的不同页面之间移动。在Ionic 4中, 导航已进行了许多更改。例如, v4可以与官方的Angular Router集成, 而不必使用Ionics自己的navController。它为整个应用程序提供了更一致的路由体验。 Angular Router是Angular应用程序中最重要的库。如果不可用, 则该应用程序无法在重新加载浏览器时保持其导航状态。因此, 借助Ionic框架和Angular Router, 你可以创建可链接且具有丰富动画的丰富应用程序。

传统的网站使用线性历史记录, 用户可以浏览到所需的页面, 并且可以按“上一步”按钮向后浏览。但是, 在Ionic Framework中, 应用程序可以通过允许并行导航来实现这一目标。这意味着它具有多个导航堆栈, 并且可以随时交换它们。

Ionic的最新版本使用导航堆栈来实现页面之间的导航。它可以简单地作为页面堆栈使用, 其中一个页面ID位于另一页面的顶部。众所周知, 堆栈只能访问顶层元素。 Ionic具有类似的概念, 你只能在导航堆栈顶部查看页面。如果要导航到另一个页面, 则需要执行以下两个操作之一:

  • 推入:将页面推入堆栈。这意味着将元素放在顶部。因此, 当你导航到页面时, 会将页面推入堆栈顶部。
  • 弹出:弹出页面, 直到目标页面位于顶部。但是, 必须将页面放在导航堆栈中, 你之前已经导航到该页面。因此, 当你从页面导航时, 你是从堆栈顶部弹出页面。

让我们逐步了解如何在Ionic应用程序的不同页面之间导航。

情况1

以下示例说明了应用程序中的基本导航。

步骤1:创建一个新项目。你可以从此处了解如何在Ionic 4中创建项目。

第2步:创建一个新页面。此页面用于导航。

$ ionic g page animals

步骤3:新创建的页面会自动将其路径添加到app-routing.module.ts文件中, 如下所示。

{ path: 'animals', loadChildren: './animals/animals.module#AnimalsPageModule' }{ path: 'animals', loadChildren: './animals/animals.module#AnimalsPageModule' }

在app.component.html中, <ion-router-outlet>组件负责在应用程序中呈现页面。它专门用于Ionic路由, 其工作原理与常规角路由器组件相同。

步骤4:创建页面后, 打开home.page.html文件并添加以下代码。

<ion-header>
  <ion-toolbar>
    <ion-title>
      Ionic Navigation
    </ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  <div class="ion-padding">
    <p>The world is your oyster.</p>
    <ion-button href="/animals">ANIMALS</ion-button>
  </div>
</ion-content>

步骤5:现在, 运行项目。出现以下屏幕。

Ionic导航和路由

单击“动物”按钮时, 将导航到“动物”页面。它可以显示在下面的屏幕中。

Ionic导航和路由

情况二

用户还可以以编程方式在页面之间导航, 这可以从下面的示例中理解。

步骤1:在home.page.html文件中添加以下按钮。

<ion-button (click)="go()">Go</ion-button>

步骤2:打开home.page.ts文件并插入以下代码。

import { Component } from '@angular/core';
import { Router } from '@angular/router';

@Component({
  selector: 'app-home', templateUrl: 'home.page.html', styleUrls: ['home.page.scss'], })
export class HomePage {
  constructor(private router: Router) {}

  go() {
    this.router.navigate(['animals']);
  }
}

第3步:打开animals.page.html并添加以下按钮以在前一页上导航。

<ion-buttons slot="start" (click)="goBack()">Back</ion-buttons>

步骤4:打开animal.page.ts文件, 并插入以下代码。

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';

@Component({
  selector: 'app-animals', templateUrl: './animals.page.html', styleUrls: ['./animals.page.scss'], })
export class AnimalsPage implements OnInit {

  constructor(private router: Router) { }

  ngOnInit() {
  }
  goBack() {
    this.router.navigate(['home']);
  }
}

步骤5:执行应用程序。出现以下屏幕。

Ionic导航和路由

现在, 单击“转到”按钮, 你将导航到“动物”页面。在此页面上, 当你单击“后退”按钮时, 页面将自动导航到主页。

Ionic导航和路由

情况3

导航也可以通过使用URL来执行。你可以在以下示例的帮助下理解它。

步骤1:在动物页面内创建一个新组件。要创建组件, 请执行以下命令。

$ ionic g c animals/profile

步骤2:接下来, 打开animals.module.ts文件并导入ProfileComponent。然后, 添加Profile组件的路由以及ID。在animal.module.ts文件中添加以下代码片段。

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';

import { IonicModule } from '@ionic/angular';

import { AnimalsPage } from './animals.page';
import { ProfileComponent } from './profile/profile.component';

const routes: Routes = [
  {
    path: '', component: AnimalsPage
  }, {
    path: ':id', component: ProfileComponent
  }
];

@NgModule({
  imports: [
    CommonModule, FormsModule, IonicModule, RouterModule.forChild(routes)
  ], declarations: [AnimalsPage, ProfileComponent]
})
export class AnimalsPageModule {}

步骤3:打开home.page.html文件并添加以下按钮。在这里, 我们将在路由路径中传递一些随机ID。

<ion-button href="/animals/someid">ANIMALS</ion-button>

步骤4:打开home.page.ts文件并插入以下代码。

import { Component } from '@angular/core';
import { Router } from '@angular/router';

@Component({
  selector: 'app-home', templateUrl: 'home.page.html', styleUrls: ['home.page.scss'], })
export class HomePage {
  constructor(private router: Router) {}

  go() {
    this.router.navigateByUrl('/animals');
  }
}

步骤4:现在, 执行该应用程序, 你将获得以下屏幕。

Ionic导航和路由

单击动物按钮, 你将在配置文件组件上导航。

Ionic导航和路由

案例4

你还可以通过从URL中提取ID来使上述示例更加动态。为此, 我们需要使用名为antivatedRoutes的角度服务。以下示例对其进行了更清晰的说明。

步骤1:打开profile.component.ts文件并插入以下代码。

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

@Component({
  selector: 'app-profile', templateUrl: './profile.component.html', styleUrls: ['./profile.component.scss'], })
export class ProfileComponent implements OnInit {
  id: any;

  constructor(private route: ActivatedRoute) { }

  ngOnInit() {
    this.id = this.route.snapshot.paramMap.get('id');
  }
}

步骤2:打开profile.component.html文件并添加以下代码。在这里, 我们将显示将始终返回URL中传递的新ID的ID。

<p>
  Profile components Routing Works Great! for ID {{ id }}
</p>

步骤3:现在, 执行应用程序, 你将获得以下输出。每次导航到其他URL时, 都会在UI中显示不同的ID。

Ionic导航和路由

赞(0)
未经允许不得转载:srcmini » Ionic导航和路由

评论 抢沙发

评论前必须登录!