Маршруты, определенные в субмодуле Angular 8, не оцениваются при запуске приложения - PullRequest
1 голос
/ 28 января 2020

После обновления до Angular 8, мой SPA ведет себя немного по-другому при загрузке всего приложения с данным га sh. При загрузке #/public/signup приложение будет перенаправлено на #/trips/home.

Мое приложение является модульным, и app.route.ts определяет только:

const routes: Routes = [
    { path: '', pathMatch: 'full', redirectTo: 'trips/home' },
    { path: '**', redirectTo: 'trips/home' },
];

export const AppRouting = RouterModule.forRoot( routes, {
    useHash: true
} );

public / publi c .route.ts, затем определяет

const publicRoutes: Routes = [
    {
        path: 'public',
        children: [
            { path: 'signup', component: SignupComponent },
            { path: 'about', component: AboutComponent },
            { path: 'privacy', component: PrivacyComponent },
            { path: 'terms', component: TermsComponent },
            { path: 'login', component: LoginComponent },
            { path: 'reset/:token', component: ResetComponent },
            { path: 'verify/:token', component: VerifyComponent },
            { path: 'forgotpassword', component: ForgotpasswordComponent },
            { path: 'logout', component: LogoutComponent },
        ]
    }
];

export const PublicRoutes = RouterModule.forChild( publicRoutes );

Кажется, что происходит некоторая ленивая загрузка, поэтому во время оценки путей ha sh пути / publi c еще не известны, и я получаю перенаправление всеохватывающего сообщения в 'trips / home'. После загрузки приложения все пути работают отлично.

PublicModule определен в app.module.ts (полная загрузка) как

@NgModule( {
    declarations: [AppComponent],
    imports: [
        BrowserModule,
        BrowserAnimationsModule,
        FlexLayoutModule,

        StateModule,
        CoreModule,
        SharedModule,
        PublicModule,
        StaticDataModule,
        ReportingModule,
        TripsModule,
        // register *after* feature modules and their routes!
        AppRouting,
        // required, even if the array is empty (see sub-modules for registered features)
        EffectsModule.forRoot( [] )
    ],
    exports: [ ],
    providers: [
        Title,
        { provide: LocationStrategy, useClass: HashLocationStrategy },
        { provide: APP_BASE_HREF, useValue: '/' }
    ],
    bootstrap: [AppComponent]
} )
export class AppModule { }

Может кто-нибудь указать мне на изменение, так как Angular 7 о том, как обрабатываются модульные маршруты?

1 Ответ

0 голосов
/ 31 января 2020

Не удивительно, что причина вовсе не была Angular. Для кого-то, сталкивающегося с подобной проблемой:

  • Отладка маршрутизации во время запуска приложения не работает, так как Chrome отладчик слишком медленно подбирает точки останова при загрузке приложения . Таким образом, тот факт, что вы не достигли точки останова, не означает, что код не выполняется.
  • Таким образом: используйте старые добрые console.log операторы для отслеживания происходящего
  • В моем случае я имел эффект только при компиляции с aot=true, поэтому я настроил соответствующую конфигурацию в angular. json и запустил ng serve --configuration=aot

Это в итоге нашло условная проверка которая глючила. Код получал событие подписки на хранилище ngrx, полагаю, что в ngrx 7 до 8.6 произошли некоторые изменения, из-за которых мой оператор if выдал неправильный go.

Надеюсь, приведенные выше советы по отладке помогут.

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