Я занимаюсь разработкой мобильного приложения с использованием ioni c angular. У меня есть три вкладки в нижней части моего экрана (маршрутизация работает нормально). На одной из этих вкладок у меня есть меню, которое используется для перехода на другие страницы этой вкладки. Однако, когда вы используете меню, оно работает только один раз? Если я refre sh или перейти на другую вкладку и вернуться, он работает только один раз. Я понимаю, что это была ошибка в Angluar 4, поэтому я запустил npm i -g ionic/angular
в надежде решить эту проблему. Запуск ionic -info
Я получаю
Ionic:
Ionic CLI : 5.4.16
Ionic Framework : @ionic/angular 5.0.4
@angular-devkit/build-angular : 0.803.25
@angular-devkit/schematics : 8.3.25
@angular/cli : 8.3.25
@ionic/angular-toolkit : 2.1.2
, поэтому, безусловно, эта проблема должна быть решена? Теперь я думаю, что это ошибка в моей маршрутизации
/ app-routing-module.ts
const routes: Routes = [
{
path: '',
redirectTo: 'app',
pathMatch: 'full'
},
{
path: 'app',
loadChildren: () => import('./tabs/tabs.module').then( m => m.TabsPageModule)
},
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
],
exports: [RouterModule]
})
export class AppRoutingModule { }
Вот мой app-routing-module, который загружает моя страница вкладок по умолчанию
моя страница вкладок содержит серию дочерних страниц, которые все загружаются нормально
. / tabs-routing-module
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { TabsPage } from './tabs.page';
const routes: Routes = [
{
path: '',
redirectTo: 'homemenu',
pathMatch: 'full'
},
{
path: '',
component: TabsPage,
children: [
{
path: 'homemenu',
loadChildren: () => import('../homemenu/homemenu.module').then( m => m.HomemenuPageModule)
},
{
path: 'settings',
loadChildren: () => import('../settings/settings.module').then( m => m.SettingsPageModule)
},
{
path: 'account',
loadChildren: () => import('../account/account.module').then( m => m.AccountPageModule)
},
]
},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class TabsPageRoutingModule {}
Мое меню загружает домашний модуль по умолчанию
. / Homemenu-routing-module
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomemenuPage } from './homemenu.page';
const routes: Routes = [
{
path: '',
redirectTo: 'home',
pathMatch: 'full'
},
{
path: '',
component: HomemenuPage,
children: [
{
path: 'home',
loadChildren: () => import('../home/home.module').then( m => m.HomePageModule),
},
{
path: 'page2',
loadChildren: () => import('../page2/page2.module').then( m => m.Page2PageModule),
},
{
path: 'page3',
loadChildren: () => import('../page3/page3.module').then( m => m.Page3PageModule),
}
]
},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class HomemenuPageRoutingModule {}
мои ссылки меню отображаются на моей homemenu-странице. ts
. / homemenu-page.ts
import { Router, RouterEvent } from '@angular/router';
@Component({
selector: 'app-homemenu',
templateUrl: './homemenu.page.html',
styleUrls: ['./homemenu.page.scss'],
})
export class HomemenuPage implements OnInit {
pages =[
{
title: 'Home',
url: 'home'
},
{
title: 'Page2',
url: 'page2'
},
{
title: 'Page3',
url: 'page3'
},
];
selectedPath = '';
constructor(private router: Router) {
this.router.events.subscribe((event: RouterEvent) => {
this.selectedPath = event.url;
});
}
ngOnInit() {
}
}
Я прошел маршрут и, похоже, все должно работать хорошо? Я что-то упустил? Обратите внимание, что эта проблема работает по любой ссылке. Если я загружу любую ссылку в меню, она будет работать один раз, пока я не попытаюсь перейти снова, и она не будет перенаправлять меня на новую страницу, меню просто исчезнет, но без новой страницы или нового URL
Обновление : я удалил Ioni c и переустановил без результатов
npm uninstall ionic
npm install ionic
Если щелкнуть правой кнопкой мыши меню и открыть в новой вкладке, все работает нормально? Если моя маршрутизация выглядит хорошо, пожалуйста, дайте мне знать, и я удалю этот код из поста!
Вот homemenu.page.ts, если это поможет
import { Component, OnInit } from '@angular/core';
import { Router, RouterEvent } from '@angular/router';
@Component({
selector: 'app-homemenu',
templateUrl: './homemenu.page.html',
styleUrls: ['./homemenu.page.scss'],
})
export class HomemenuPage implements OnInit {
pages =[
{
title: 'Home',
url: 'home'
},
{
title: 'Page 1',
url: 'page1'
},
{
title: 'Page2',
url: 'Page2'
},
];
selectedPath = '';
constructor(private router: Router) {
this.router.events.subscribe((event: RouterEvent) => {
this.selectedPath = event.url;
});
}
ngOnInit() {
}
}