Side menu navigation problem after switch between pages

Hi. I am new in ionic and angular and I am trying to create a single page with authentication. I have side menu different for user and visitor. My foled structure looks like this:
./app/

./app/user/profile/
./app/user/logout/

./app/visitor/login/
./app/visitor/registration/

And I am trying to navigate from user/profile folder/page after logout to visitor/login.

When visitor visit the page, he can see this:

After login, I redirected him to another page and after that, he can see this:

But after logout, I only call
`this.router.navigateByUrl(“visitor/login-internal”);, side menu is nowhere and you can see this:

To generate side menu for visitor and user, I am using this code, same for visitor.page.html and user.page.html:

<ion-app>
  <ion-split-pane content-id="visitor-menu">
    <ion-menu side="start" content-id="visitor-menu">
      <ion-header>
        <ion-toolbar color="primary">
          <ion-title>Menu</ion-title>
        </ion-toolbar>
      </ion-header>
      <ion-content>
        <ion-list>
          <ion-menu-toggle auto-hide="false" *ngFor="let page of appPages; let i = index">
            <ion-item routerDirection="root" [routerLink]="[page.url]" lines="none" detail="false"
              [class.selected]="selectedIndex == i">
              <ion-icon [name]="page.icon" slot="start"></ion-icon>
              <ion-label>{{ page.title }}</ion-label>
            </ion-item>
          </ion-menu-toggle>
        </ion-list>
      </ion-content>
    </ion-menu>
    <div class="ion-page" id="visitor-menu">
      <ion-content class="ion-padding">
        <ion-router-outlet class="ion-page" id="visitor-menu"></ion-router-outlet>
      </ion-content>
    </div>
  </ion-split-pane>
</ion-app>

Pages in the menu is stored in visitor.page.ts and user.page.ts. Here is example of visitor.page.ts, code for user.page.ts is almost equal:

@Component({
  selector: 'app-visitor',
  templateUrl: './visitor.page.html',
  styleUrls: ['./visitor.page.scss'],
})
export class VisitorPage implements OnInit {
  public selectedIndex = 0;
  public appPages = [
    {
      title: 'Quick match',
      url: '/visitor/quick-match',
      icon: 'football'
    },
    {
      title: 'Login',
      url: '/visitor/login-internal',
      icon: 'log-in'
    },
    {
      title: 'Registration',
      url: '/visitor/registration-internal',
      icon: 'person-add'
    },
    {
      title: 'Login via Google',
      url: '/visitor/login-google',
      icon: 'logo-google'
    }
  ];
  constructor() { }
  ngOnInit() {
  }
}

Here is example of visitor-routing.module.ts, user-routing.module.ts is almost equal:

const routes: Routes = [
  {
    path: '',
    component: VisitorPage,
    children: [
      {
        path: 'login-facebook',
        loadChildren: () => import('./login-facebook/login-facebook.module').then( m => m.LoginFacebookPageModule)
      },
      {
        path: 'login-google',
        loadChildren: () => import('./login-google/login-google.module').then( m => m.LoginGooglePageModule)
      },
      {
        path: 'login-internal',
        loadChildren: () => import('./login-internal/login-internal.module').then( m => m.LoginInternalPageModule)
      },
      {
        path: 'registration-internal',
        loadChildren: () => import('./registration-internal/registration-internal.module').then( m => m.RegistrationInternalPageModule)
      },
      {
        path: 'quick-match',
        loadChildren: () => import('./quick-match/quick-match.module').then( m => m.QuickMatchPageModule)
      }
    ]
  },
];
@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule],
})
export class VisitorPageRoutingModule {}

In app folder, main/root folder, I have almost nothing, only app-routing.module.ts has some of my code:

const routes: Routes = [
  { path: '', redirectTo: 'visitor/login', pathMatch: 'full' },
  {
    path: 'errors',
    loadChildren: () => import('./errors/errors.module').then( m => m.ErrorsPageModule)
  },
  {
    path: 'visitor',
    loadChildren: () => import('./visitor/visitor.module').then( m => m.VisitorPageModule),
    canLoad: [AuthGuard],
    data: { 'accessLevel': AccessLevel.VISITOR }
  },
  {
    path: 'user',
    loadChildren: () => import('./user/user.module').then( m => m.UserPageModule),
    canLoad: [AuthGuard],
    data: { 'accessLevel': AccessLevel.USER }
  },
];

@NgModule({
  imports: [
    RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
  ],
  exports: [RouterModule]
})
export class AppRoutingModule { }

I am sure that I have something absolutely wrong in my routing logic.

Here is ionic info:

Ionic:

   Ionic CLI                     : 5.4.16 (C:\Users\frant\node_modules\ionic)
   Ionic Framework               : @ionic/angular 5.1.1
   @angular-devkit/build-angular : 0.901.6
   @angular-devkit/schematics    : 9.1.6
   @angular/cli                  : 9.1.6
   @ionic/angular-toolkit        : 2.2.0

Capacitor:

   Capacitor CLI   : 2.1.0
   @capacitor/core : 2.1.0

Cordova:

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms : browser 6.0.0
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.2.1, (and 5 other plugins)

Utility:

   cordova-res : 0.14.0
   native-run  : 1.0.0

System:

   NodeJS : v12.13.0 (C:\Program Files\nodejs\node.exe)
   npm    : 6.12.0
   OS     : Windows 10

Application running with command ionic serve on localhost WIN 10 64 bit.
Thank you and sorry for any advice or time what you spend because of my problem.

1 Like