Angular 5延迟加载模块在刷新时不起作用

时间:2018-05-02 16:17:25

标签: angular .htaccess wamp angular5

  

关于此问题的注意事项:我注意到它只发生在某些类型的构建过程中。由于我使用angular-cli,因此每次使用ng build编译应用程序时都会出现此错误。唯一的例外是我使用ng build --prod时。我使用了我曾经使用过的任何其他标志,例如--dev --aot,然后我会在无法刷新页面时收到错误。

     

使用ng build --prod时,页面上的刷新将使应用程序按预期运行。但在开发过程中,这意味着每次对代码进行更改时都需要运行命令,否则我会收到如下错误:

     

(void 0) is not a function

我试图使用wamp服务器来使用Angular 5延迟加载的模块,但是当我使用延迟加载的模块刷新页面时我遇到了问题。这是我的路由配置:

// 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/aboutpage/condition),PageModule仅按需加载等等。

问题是当我在网址/page/about上(例如)并刷新页面时,我收到404错误。

如果我在网址/user/profile上刷新页面,则应用程序会按预期加载,因为user不是延迟加载的,而是在主模块中。<\ n / p>

我已经使用了这个.htaccess配置

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

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

但只有在这种特殊情况下,它才能正常工作。有没有办法解决这个问题?

0 个答案:

没有答案