代码之家  ›  专栏  ›  技术社区  ›  prime

角度6:无法在页面加载时加载子路由

  •  0
  • prime  · 技术社区  · 6 年前

    例如,在功能模块路径上重新加载页面时遇到问题;我可以导航到

    http://example.com/#/dashboard

    但是如果我在浏览器中强制刷新页面,会出现以下导航错误:

    Router Event: NavigationError
    platform-browser.js:211 NavigationError(id: 1, url: '/dashboard', 
    error: TypeError: undefined is not a function)
    platform-browser.js:211 NavigationError {id: 1, url: "/dashboard", 
    error: TypeError: undefined is not a function
    at Array.map (<anonymous>)
    at webpackAsyncContext (ht…}
    

    我的路由文件如下:

    应用程序-路由.module.ts:

    import { NgModule } from '@angular/core';
    import { RouterModule, Routes, CanActivateChild } from '@angular/router';
    
    const routes: Routes = [
        {
            path: 'dashboard',
            loadChildren: './dashboard/dashboard.module#DashboardModule'
        },
        { 
            path: '',
            redirectTo: '',
            pathMatch: 'full'
        }
    ];
    
    @NgModule({
      imports: [
    
        RouterModule.forRoot(routes, { enableTracing: true, useHash: true } )
      ],
      exports: [
        RouterModule
      ]
    })
    export class AppRoutingModule {}
    

    仪表板-路由.module.ts:

    import { NgModule } from '@angular/core';
    import { RouterModule, Routes } from '@angular/router';
    
    import { DashboardComponent } from './dashboard.component';
    
    const routes: Routes = [
        { 
            path: '', 
            component: DashboardComponent
        }
    ];
    
    @NgModule({
        imports: [
            RouterModule.forChild(routes)
        ],
        exports: [
            RouterModule
        ]
    })
    export class DashboardRoutingModule {}
    

    仪表板.module.ts:

    import { NgModule } from '@angular/core'
    import { CommonModule } from '@angular/common'
    
    import { SharedModule } from '../shared/shared.module'
    
    import { DashboardRoutingModule } from './dashboard-routing.module'
    import { DashboardComponent } from './dashboard.component'
    
    @NgModule({
        imports: [
            CommonModule,
            DashboardRoutingModule,
            SharedModule
        ],
        declarations: [
            DashboardComponent
        ],
        exports: [
            DashboardRoutingModule
        ]
    })
    export class DashboardModule { }
    

    import { NgModule } from '@angular/core'
    import { BrowserModule } from '@angular/platform-browser'
    import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
    
    import { CoreModule } from './core/core.module'
    import { SharedModule } from './shared/shared.module'
    
    import { DashboardModule } from './dashboard/dashboard.module'
    import { AppRoutingModule } from './app-routing.module';
    
    import { AppComponent } from './app.component';
    
    import { DashboardComponent } from './dashboard/dashboard.component'
    
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        BrowserModule,
        CoreModule,
        BrowserAnimationsModule,
        AppRoutingModule,
        CoreModule.forRoot(),
        DashboardModule,
      ],
      bootstrap: [AppComponent]
    })
    export class AppModule {}
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Antoniossss    6 年前

    如果您使用的是延迟加载,则不能将延迟加载的模块包含为导入(也不能从该模块使用TS import),因为它将随导入模块一起加载。