#angular #lazy-loading
Вопрос:
У меня есть два маршрута :
- домой [ » ]
- о [ «о» ]
Когда я захожу в /о непосредственно в своем браузере, я замечаю 2 вещи :
- мой домашний модуль предварительно загружен (в то время как я запросил /о чем)
- URL — адрес переписывается следующим образом : /о компании -gt; / -gt;gt; /о компании
приложение-маршрутизация.модуль.t
import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; const routes: Routes = [ { path: '', loadChildren: () =gt; import('./routes/home/home.module').then(m =gt; m.RoutesHomeModule) }, { path: 'about', loadChildren: () =gt; import('./routes/about/about.module').then(m =gt; m.RoutesAboutModule) }, { path: '**', redirectTo: '', pathMatch: 'full' } ]; @NgModule({ imports: [ RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' }) ], exports: [ RouterModule ] }) export class AppRoutingModule { }
app.component.ts
import { Component, OnInit } from '@angular/core'; import { NavigationStart, Router } from '@angular/router'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.less'], }) export class AppComponent implements OnInit { constructor( private router: Router, ) { } ngOnInit(): void { this.router.events.subscribe(event =gt; { if (event instanceof NavigationStart) { // outputs "/about" but NEVER "/" console.log(event.url); } }); } }
Угловой : 13.0.2
Chrome : 96.0.4664.55
ОС : macOS 12.0.1
Комментарии:
1. С какой проблемой вы столкнулись?
2. Я допустил ошибку при вводе своего примера, поведение, которое я описал, такое же, как и без «данных: { предварительная загрузка: истина }» в моем домашнем маршруте
Ответ №1:
Чтобы пропустить предварительную загрузку домашнего модуля, вы можете обновить массив маршрутов следующим образом.
const routes: Routes = [ { path: 'home', loadChildren: () =gt; import('./routes/home/home.module').then(m =gt; m.RoutesHomeModule)}, { path: 'about', loadChildren: () =gt; import('./routes/about/about.module').then(m =gt; m.RoutesAboutModule) }, { path: '**', redirectTo: '', pathMatch: 'full' } ];
Это может ограничить предварительную загрузку.
Вы можете указать как path: 'home'
вместо path: ''
.
Комментарии:
1. Какие изменения вы внесли ?
2. Обновил свой ответ @Ziad
3. Домашний модуль больше не предустановлен, но у меня все еще есть перезапись URL : /about -gt; / -gt;gt; /о
4. Итак, когда вы даете
/about
, это перенаправление на»/»?5. Да, затем все возвращается к /о