Angular 06:ERROR in在编译时无法读取null的属性'loadChildren'

时间:2018-05-15 05:44:02

标签: angular angular-routing

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

我跟着this,但没有成功。

早期使用Angular 5正常工作。

这是我的RoutingModule:

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
      ]
    };
  }
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我知道这是一个老问题,但问题似乎是使用 Routes 而不是 Route[]。我猜是传播运算符和打字稿“export declare type Routes = Route[];”不要一起玩。