Angular4: RouterReuseStrategy и URL-адрес маршрута модуля с отложенной загрузкой

У меня есть угловой проект, в котором я хочу создать какое-то меню навигации. Идея состоит в том, что все ссылки приложения размещаются в NavigationComponent верхнего уровня, а другие маршруты являются его дочерними элементами и загружаются в его router-outlet. Маршруты приложений стали выглядеть так:

const appRoutes: Routes = [
    { path: 'login', component: LoginComponent },
    {
        path: '',
        component: NavigationComponent,
        children: [
            { path: 'somepage', component: SomePageComponent },
            { path: 'module1', loadChildren: 'app/modules/module1.module#Module1Module' },
            { path: 'module2', loadChildren: 'app/modules/module2.module#Module2Module' },
        ]
    },
    // otherwise redirect to 404
    { path: '**', component: PageNotFoundComponent }
];

Теперь я хочу добавить пользовательский RouterReuseStrategy, но когда я перехожу к некоторому маршруту дочерних модулей, которые еще не загружены, я не могу получить URL-адрес будущего маршрута в методе shouldReuseRoute().

Например, если я перейду к '/module1/someRouteOfModule1' в routeConfig.path будущего маршрута, ActivatedRouteSnapshot будет только 'module1', а в массиве pathFromRoot не будет другой части маршрута, и я не могу правильно сохранить эту страницу.

Но затем, после этого, приложение переходит к другому маршруту этого модуля, весь маршрут может быть получен из массива pathFromRoute, и все работает нормально.

Кто-нибудь сталкивался с этой проблемой? Может быть, есть способ предварительно загрузить маршруты отложенной загрузки модулей?


person Avaar0032    schedule 30.03.2017    source источник


Ответы (1)


У меня была аналогичная проблема с ленивой загрузкой, и я решил ее, установив ключ для каждого маршрута.

const appRoutes: Routes = [

       {path: "dashboard", loadChildren: "./dashboard/dashboard.module#DashboardModule", data: { key: "dashboard" }},
,

];
person nayakam    schedule 03.07.2017