#angular #routes #lazy-loading #angular12
Вопрос:
У меня очень странная проблема с маршрутизацией и ленивыми загруженными модулями. Я прочитал несколько различных статей и руководств по ленивой загрузке и маршрутизации, но не смог решить эту проблему. Короче говоря, я лениво загружаю несколько модулей, однако, когда я пытаюсь использовать метод навигации по маршрутизатору (), я вижу обновление адресной строки с правильным URL-адресом, но сама страница не перемещается. Если затем я обновлю страницу с обновленной адресной строкой, я попаду на страницу, на которую должен был изначально перейти. Я подтвердил, что аспект ленивой загрузки работает так, как ожидалось, поскольку я вижу, как загружаются фрагменты, когда я выбираю соответствующий маршрут. Я также проверил, что если вместо использования ленивой загрузки я загружу соответствующий компонент заранее, маршрутизация будет работать без каких-либо проблем.
приложение.модуль
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
HttpClientModule,
BrowserAnimationsModule,
SharedModule,
AppRoutingModule,
],
providers: [
LoginService,
LocalStorageService,
{
provide: HTTP_INTERCEPTORS,
useClass: CustomHttpInterceptor,
multi: true,
},
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi: true,
},
],
bootstrap: [AppComponent],
})
export class AppModule {}
маршрутизация приложений
const routes: Routes = [
{
path: 'login',
loadChildren: () =>
import('./login/login.module').then((c) => c.LoginModule),
},
{
path: 'employer',
canActivate: [UserGuard],
loadChildren: () =>
import('./employer/employer.module').then((c) => c.EmployerModule),
},
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
работодатель-модуль
@NgModule({
declarations: [EmployerComponent, EmployersComponent],
imports: [CommonModule, SharedModule, EmployerRoutingModule],
})
export class EmployerModule {}
работодатель.маршрут
const routes: Routes = [
{
path: '',
component: EmployersComponent,
},
{
path: 'detail/:id',
component: EmployerComponent,
},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class EmployerRoutingModule {}
Комментарии:
1. Сначала попробуйте с <li><li><маршрутная ссылка=»/работодатель»>На работодателя<маршрутная ссылка=»/работодатель»></a></a></li> в вашем app.component.html. У вас есть вторая <розетка маршрутизатора> для дочерних страниц?. Модуль входа в систему работает нормально?
2. Ты пользуешься
ionic
?3. У меня только одна розетка маршрутизатора.
4. Но у меня есть другое приложение, использующее аналогичную архитектуру, в котором также есть только одна розетка маршрутизатора.
5. Я не использую ионный
Ответ №1:
Я, наконец, нашел свою проблему, которая мешала моей маршрутизации. Внутри моего общего модуля.я вызывал AppRoutingModule, который каким-то образом дублировал все маршруты и все нарушал. Маршрутизация теперь работает так, как ожидалось.