【问题标题】:Angular 06: ERROR in Cannot read property 'loadChildren' of null on compileAngular 06:编译时无法读取 null 的属性“loadChildren”中的错误
【发布时间】:2018-05-15 05:44:02
【问题描述】:

我最近刚刚将我的项目升级到 Angular 6 并遇到了这个问题。 无法读取 null 的属性“loadChildren”中的错误。第一次编译项目时出现此错误,并且在更新项目的其他部分时再次编译时,错误消失了。

我关注了this,但没有成功。

它在早期使用 Angular 5 时可以正常工作。

这是我的路由模块:

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

import { adminRoutes } from '@ui/admin-module';
import { HomeComponent } from './home/home.component';
import { LayoutComponent } from './layout/layout.component';

@NgModule({
  imports: [
    RouterModule.forRoot([
      {
        path: '',
        component: LayoutComponent,
        children: [
          {path: '', redirectTo: 'home', pathMatch: 'full'},
          {path: 'home', component: HomeComponent},
          ...adminRoutes,
        ]
      }
    ])
  ],
  exports: [
    RouterModule
  ]
})
export class AppRoutingModule {
}

问题在于 adminRoutes,当我删除它时,编译错误消失了。

请帮助我了解导致问题的原因?另外,如果我需要提供更多详细信息,请告诉我。提前致谢。

编辑:提供管理员路由和模块详细信息。

管理路线

    import {ModuleWithProviders, NgModule} from '@angular/core';
import {Route, RouterModule, Routes} from '@angular/router';

import { LayoutComponent } from './core';
import { designationRoutes } from './modules/designations';
import { organizationRoutes } from './modules/organizations';
import { rolesRoutes } from './modules/roles';
import { templateRoutes } from './modules/templates';
import { userRoutes } from './modules/users';

export const adminModuleRoutes: Routes = [
  ...rolesRoutes,
  ...userRoutes,
  ...designationRoutes,
  ...organizationRoutes,
  ...templateRoutes
];

export const adminRoutes: Routes = [
  {
    path: 'admin',
    component: LayoutComponent,
    children: [
      { path: '', pathMatch: 'full', redirectTo: 'roles' },
        ...adminModuleRoutes
    ]
  }
];

管理模块

export class AdminModule {
  static forRoot(configProvider: Provider[]): ModuleWithProviders {
    return {
      ngModule: AdminModule,
      providers: [
        ...configProvider
      ]
    };
  }
}

【问题讨论】:

  • 你应该出示你的adminRoutesadmin-module
  • @ritaj,就这么做了。

标签: angular angular-routing


【解决方案1】:

收集所有路线:adminRoutes,然后是roleRoutesuserRoutes 等,并将它们放在同一个文件中。

问题是,在构建路由时,Angular 似乎没有遵循多层链接。这也是我根据你提到的问题的猜测。

【讨论】:

  • 我做到了。但错误仍然存​​在。我认为管理模块结构需要重构。
【解决方案2】:

我知道这是一个老问题,但似乎问题在于使用 Routes 而不是 Route[]。我猜传播运算符和打字稿“出口声明类型路线=路线[];”一起玩不好。

【讨论】:

    猜你喜欢
    • 2017-08-24
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 2021-11-14
    • 2019-07-03
    • 2018-09-02
    相关资源
    最近更新 更多