Ioni c Ссылки меню могут быть использованы только один раз - PullRequest
0 голосов
/ 01 марта 2020

Я занимаюсь разработкой мобильного приложения с использованием 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() {
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...