简体   繁体   English

RouterModule.forRoot() 调用了两次。 延迟加载的模块应该使用 RouterModule.forChild() 代替

[英]RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead

I m importing AppModule in Lazy loaded module which is creating error : Error: Uncaught (in promise): Error: RouterModule.forRoot() called twice.我在延迟加载的模块中导入 AppModule,该模块正在创建错误:错误:未捕获(承诺):错误:RouterModule.forRoot() 调用了两次。 Lazy loaded modules should use RouterModule.forChild() instead.延迟加载的模块应该使用 RouterModule.forChild() 代替。

app module应用模块

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { NgClockPickerLibModule } from 'ng-clock-picker-lib';
import { SharedDataService } from './services/shared-data.service';


@NgModule({
  declarations: [
    AppComponent,
    ...
  ],
  imports: [
    BrowserModule,  
    NgClockPickerLibModule,
    ...
  ],
  providers: [
    SharedDataService,
    ...
  ],
  exports: [
    NgClockPickerLibModule
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

app routing module应用路由模块

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router';

const routes: Routes = [
  { path: 'journalling', loadChildren: './Journalling/modules/journalling.module#JournallingModule' }
];

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forRoot(routes)
  ],
  declarations: [

  ],
  exports: [RouterModule]
})
export class AppRoutingModule { }

journalling module日志模块

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { JournallingRoutingModule } from './journalling-routing.module';
import { AppModule } from 'src/app/app.module';


@NgModule({
  imports: [
    CommonModule,
    JournallingRoutingModule,
    AppModule
  ],
  declarations: [ 
  ],
  providers: [
  ]
})
export class JournallingModule { }

journalling routing module日志路由模块

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

const routes: Routes = [  
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class JournallingRoutingModule { }

[Error RouterModule.forRoot() called twice. [错误 RouterModule.forRoot() 调用了两次。 Lazy loaded module should use forChild() instead.][1] [1]: https://i.stack.imgur.com/yMDry.png延迟加载的模块应该使用 forChild() 代替。][1] [1]: https://i.stack.imgur.com/yMDry.png

journalling module日志模块

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { JournallingRoutingModule } from './journalling-routing.module';
import { AppModule } from 'src/app/app.module'; <--- remove this import

@NgModule({
  imports: [
    CommonModule,
    JournallingRoutingModule,
    AppModule // <--- remove this import
  ],
  declarations: [ 
  ],
  providers: [
  ]
})
export class JournallingModule { }

The problem is that you're importing the AppModule in your JournallingModule which causes RouterModule.forRoot() to be called twice.问题是您在 JournallingModule 中导入 AppModule,这会导致 RouterModule.forRoot() 被调用两次。 AppModule is your root module and should not be imported in child modules. AppModule 是您的根模块,不应在子模块中导入。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM