Как сделать лениво загруженное приложение ionic Framework со страницей входа - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть приложение, которое отлично работает, но я хочу переместить его за страницу входа.Различные модули загружаются лениво и прекрасно работают.Однако, когда я изменяю приложение, чтобы всегда сначала переходить на страницу входа в систему (где я буду проверять состояние входа и перенаправлять в приложение, если оно вошло в систему), я получаю ошибку о маршрутах.

app-routing.module.ts

import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';

const routes: Routes = [
  { path: '', loadChildren: './login/login.module#LoginPageModule' }
  // this next line was how the app routed before I tried adding the login page
  // { path: '', loadChildren: './tabs/tabs.module#TabsPageModule' }
];
@NgModule({
  imports: [
    RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
  ],
  exports: [RouterModule]
})
export class AppRoutingModule {}

login.router.module.ts

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

import { LoginPage } from './login.page';

const routes: Routes = [
    { path: '', component: LoginPage },
];

@NgModule({
    imports: [RouterModule.forChild(routes)],
    exports: [RouterModule],
})
export class LoginRoutingModule { }

login.page.ts

import { ChangeDetectionStrategy, Component } from '@angular/core';
import { Router } from '@angular/router';
import { Store } from '@ngrx/store';
import { AppState } from '../_store/store/app.store';
import { filter } from 'rxjs/operators';

@Component({
    selector: 'app-login',
    templateUrl: 'login.page.html',
    styleUrls: ['login.page.scss'],
    changeDetection: ChangeDetectionStrategy.OnPush,
})
export class LoginPage {

    constructor(private router: Router, private store: Store<AppState>) {
        this.userSubscription = this.store.select(state => state.users.user).pipe(
            filter(user => !!user)
        ).subscribe(user => {
            if (user) {
                // THIS IS WHERE THE ERROR HAPPENS
                this.router.navigate(['/tabs']);
            }
        });
    }

}

this.router.navigate ([ '/ вкладки']);Вот где происходит ошибка:

ОШИБКА Ошибка: Uncaught (в обещании): Ошибка: не может соответствовать ни один маршрут.Сегмент URL: ошибка «tabs / поведение»: невозможно сопоставить ни один маршрут.Сегмент URL: «вкладки / поведение»

Я уверен, что здесь не хватает чего-то действительно очевидного.Первая попытка ленивой загрузки всех модулей.Я почти уверен, что мне нужно как-то ссылаться на модуль tabs в файле login.page или в login.router.module.Любая помощь будет принята с благодарностью.Проверка состояния для статуса пользователя работает отлично, я проверил, что все это работает, именно там он пытается перейти, если пользователь найден.

1 Ответ

0 голосов
/ 25 сентября 2019

Попробуйте изменить на

const routes: Routes = [
{ path: '', redirectTo: 'login', pathMatch: 'full' },
{ path: 'login', loadChildren: './login/login.module#LoginPageModule' }
{ path: 'tabs', loadChildren: './tabs/tabs.module#TabsPageModule' }
];

С этим кодом this.router.navigate(['/tabs']); вы перенаправляете на вкладки, но у вас нет его объявлять.Это для файла app.routing.ts.Не понимаю, почему у вас есть файл login.router.ts.

...