Reputation: 125
I created an ionic app with the tabs-template. I want to show on one page a side-menu for other pages.
The sidemenu appears, and i can click the items, but router doesn't change the route and the old page stays.
I hope you can help me.
app-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{ path: 'dashboard', loadChildren: './pages/dashboard/dashboard.module#DashboardPageModule'},
{ path: 'contacts', loadChildren: './pages/contacts/contacts.module#ContactsPageModule'},
{ path: 'menu', loadChildren: './pages/food-menu/food-menu.module#FoodMenuPageModule'},
{ path: 'calendar', loadChildren: './pages/calendar/calendar.module#CalendarPageModule'},
{ path: 'settings', loadChildren: './pages/settings/settings.module#SettingsPageModule' },
{ path: '**', redirectTo: 'dashboard'},
{ path: 'login', loadChildren: './pages/login/login.module#LoginPageModule' },
{ path: 'administrator', loadChildren: './pages/administrator/administrator.module#AdministratorPageModule' },
{ path: 'news-feed', loadChildren: './pages/news-feed/news-feed.module#NewsFeedPageModule' },
{ path: 'imprint', loadChildren: './pages/imprint/imprint.module#ImprintPageModule' },
{ path: 'about', loadChildren: './pages/about/about.module#AboutPageModule' },
{ path: 'privacy', loadChildren: './pages/privacy/sprivacy.module#PrivacyPageModule' }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {}
dashboard.page.ts
import { Component, OnInit } from '@angular/core';
import {MenuController} from '@ionic/angular';
import {Router} from '@angular/router';
@Component({
selector: 'app-dashboard',
templateUrl: './dashboard.page.html',
styleUrls: ['./dashboard.page.css'],
})
export class DashboardPage implements OnInit {
sideMenuPages = [
{title: 'Administration', url: 'administrator', icon: undefined},
{title: 'Settings', url: 'settins', icon: undefined},
{title: 'Imprint', url: 'imprint', icon: undefined},
{title: 'Privacy', url: 'privacy', icon: undefined},
{title: 'About', url: 'about', icon: undefined},
]
constructor(private menu: MenuController, private router: Router) { }
ngOnInit() {
this.menu.enable(true, 'dashboardMenu');
}
toggleMenu(): void {
this.menu.toggle('dashboardMenu');
}
}
dashboard.page.html
<ion-header>
<ion-toolbar>
<ion-title>
BA-Glauchau
</ion-title>
<ion-buttons slot="end">
<ion-button (click)="toggleMenu()">
<ion-icon slot="icon-only" name="more"></ion-icon>
</ion-button>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-menu side="end" menuId="dashboardMenu" contentId="content">
<ion-header>
<ion-toolbar>
<ion-title>Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-menu-toggle *ngFor="let page of sideMenuPages">
<ion-item [routerLink]="[page.url]">
<ion-icon *ngIf="page.icon" slot="start" [name]="page.icon"></ion-icon>
<ion-label>
{{page.title}}
</ion-label>
</ion-item>
</ion-menu-toggle>
</ion-list>
</ion-content>
</ion-menu>
<ion-content>
</ion-content>
app.component.html
<ion-app>
<ion-header>
<ion-toolbar>
<ion-title>APP</ion-title>
</ion-toolbar>
</ion-header>
<ion-router-outlet id="content"></ion-router-outlet>
</ion-app>
<ion-tabs>
<ion-tab-bar slot="bottom">
<ion-tab-button tab="dashboard">
<ion-icon name="home"></ion-icon>
<ion-label>Dashboard</ion-label>
</ion-tab-button>
<ion-tab-button tab="contacts">
<ion-icon name="contacts"></ion-icon>
<ion-label>Contacts</ion-label>
</ion-tab-button>
<ion-tab-button tab="menu">
<ion-icon name="restaurant"></ion-icon>
<ion-label>Menu</ion-label>
</ion-tab-button>
<ion-tab-button tab="calendar">
<ion-icon name="calendar"></ion-icon>
<ion-label>Calendar</ion-label>
</ion-tab-button>
<!--
<ion-tab-button tab="tab1">
<ion-icon name="flash"></ion-icon>
<ion-label>Tab One</ion-label>
</ion-tab-button> -->
</ion-tab-bar>
</ion-tabs>
I appreciate your help.
Upvotes: 6
Views: 12047
Reputation: 54
For those who just did a copy past from the page of a side menu starter page and are not able to interact with the side menu items to navigate remember to remove the id="main-content" from the ion-router-outlet tag
Upvotes: -1
Reputation: 12357
Follow on from my comment, where I mentioned narrowing down the problem by removing all but one of the links
It might be the actual routerLink
path that's the problem. What appears in the URL when you click on a link, Is there any errors in the console?
Try updating the paths by adding a forward slash e.g. [routerLink]="['/' + page.url]"
Upvotes: 5