Angular 5 ленивый загруженный модуль не работает при обновлении - PullRequest
0 голосов
/ 02 мая 2018

Примечание об этой проблеме : я заметил, что это происходит только при использовании определенных типов процесса сборки. Поскольку я использую angular-cli, эта ошибка будет появляться каждый раз, когда я компилирую приложение, используя ng build. Единственное исключение - когда я использую ng build --prod. Я использую любой другой флаг, который использовал раньше, например --dev --aot, тогда я получу ошибку, из-за которой не могу обновить страницу.

При использовании ng build --prod при обновлении на странице приложение будет работать должным образом. Но во время разработки это означает, что мне нужно запускать команду каждый раз, когда в код вносятся изменения, иначе я получу такие ошибки, как:

(void 0) is not a function

Я пытаюсь использовать модули Angular 5 с отложенной загрузкой, используя wamp-сервер, но у меня возникают проблемы при обновлении страницы с использованием отложенно загруженных модулей. Это моя конфигурация маршрутизации:

// Root routing config
export const mainRouting: Routes = [
    { path: '', redirectTo: 'home', pathMatch: 'full' },
    {
        path: '',
        component: PortalComponent,
        canLoad: [ResolveGuard],
        children: [
            { path: 'home', component: HomeComponent },
            {
                path: 'page',
                loadChildren: './modules/page/page.module#PageModule'
            },
            {
                path: 'user',
                component: UserComponent,
                children: [
                    { path: 'profile', component: ProfileComponent },
                    { path: 'config', component: ConfigComponent },
                ]
            }
        ]
    },
];

// LazyLoaded routing config
export const pageRouting: Routes = [
    {
        path: '',
        children: [
            { path: 'about', component: PageAboutComponent },
            { path: 'condition', component: PageConditionComponent }
        ]
    }
];

Все работает как положено. Я могу перейти на домашнюю страницу приложения, я могу получить доступ к загруженным ленивым маршрутам (page/about и page/condition), PageModule загружается только по требованию и т. Д.

Проблема в том, что когда я нахожусь на URL /page/about (например) и обновляю страницу, я получаю ошибку 404.

Если я нахожусь на URL /user/profile и обновляю страницу, приложение загружается, как и ожидалось, поскольку user не загружено, оно находится внутри основного модуля.

Я уже использую эту конфигурацию .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.html [L]
</IfModule>

Но только в этом конкретном случае это не работает. Есть ли способ решить эту проблему?

...