Multiple layout within Ionic app

When developing an Ionic app, implementing distinct layouts for different user roles is essential for usability and functionality. In this article, we’ll explore how to structure an Ionic app with two master layouts—one for regular users and another for administrators—each with its own unique navigation system.

1. Master Pages: User & Admin

The Ionic app consists of two main pages, each serving as a master layout:

  • User Page: Contains a side menu and a navigation bar for intuitive user interaction.
  • Admin Page: Includes only a side menu, focusing on administrative tasks without additional navigation clutter.

2. User Page Layout

The user interface aims to provide a seamless experience by incorporating:

  • Side Menu: A collapsible menu for quick navigation.
  • Navigation Bar: A persistent toolbar at the top for core actions.
  • Tabs: A structured format for organizing content.
Architecture for app have multiple Layout

3. Code sample

3.1 User Page Code (user.page.html)

<ion-menu contentId="main-content">
  <ion-header>
    <ion-toolbar>
      <ion-title>User Menu</ion-title>
    </ion-toolbar>
  </ion-header>
  <ion-content>
    <ion-list>
      <ion-item routerLink="/home">Home</ion-item>
      <ion-item routerLink="/profile">Profile</ion-item>
    </ion-list>
  </ion-content>
</ion-menu>

<ion-page>
  <ion-header>
    <ion-toolbar>
      <ion-title>User Dashboard</ion-title>
    </ion-toolbar>
  </ion-header>
  <ion-content>
    <ion-tabs>
      <ion-tab tab="home"></ion-tab>
      <ion-tab tab="profile"></ion-tab>
    </ion-tabs>
  </ion-content>
</ion-page>

3.2 Admin Page Layout

Administrators need a simpler interface focused on key functions. The split-pane layout allows for better content management.

Admin Page Code (admin.page.html)

<ion-split-pane>
  <ion-menu contentId="admin-content">
    <ion-header>
      <ion-toolbar>
        <ion-title>Admin Menu</ion-title>
      </ion-toolbar>
    </ion-header>
    <ion-content>
      <ion-list>
        <ion-item routerLink="/dashboard">Dashboard</ion-item>
        <ion-item routerLink="/list-users">Users</ion-item>
      </ion-list>
    </ion-content>
  </ion-menu>

  <ion-page>
    <ion-header>
      <ion-toolbar>
        <ion-title>Admin Dashboard</ion-title>
      </ion-toolbar>
    </ion-header>
    <ion-content>
      <ion-router-outlet></ion-router-outlet>
    </ion-content>
  </ion-page>
</ion-split-pane>

3.3 Routing Modules

To ensure proper navigation, routing modules define the paths for each page

User Routing Module (user-routing.module.ts)

const routes: Routes = [
  { path: 'home', loadChildren: () => import('./home/home.module').then(m => m.HomePageModule) },
  { path: 'profile', loadChildren: () => import('./profile/profile.module').then(m => m.ProfilePageModule) }
];

Admin Routing Module (admin-routing.module.ts)

const routes: Routes = [
  { path: 'dashboard', loadChildren: () => import('./dashboard/dashboard.module').then(m => m.DashboardPageModule) },
  { path: 'list-users', loadChildren: () => import('./list-users/list-users.module').then(m => m.ListUsersPageModule) }
];

4. Conclusion

By implementing distinct layouts in an Ionic app, developers can optimize usability for different roles. The user page features a side menu, navigation bar, and tabs for improved interaction, while the admin page provides a structured side menu with a split-pane layout for better content management.

I hope this article helps with your Ionic app development! If you’d like modifications or more details, let me know!

F G+ T

tuandph

Khởi đầu với .NET từ năm 2013 đến nay. Hiện tại mình đang làm full-stack developer. Yêu thích lập trình & chia sẽ kiến thức. Thời gian rảnh thường làm những tool vui vui và viết lách kể lệ sự đời.