You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular12实现懒加载时router-outlet提示不是已知元素如何解决

问题根因

MainComponent 归属SharedModule,但该模块未导入Angular的RouterModule,导致模板中的<router-outlet>标签无法被框架识别。以下是具体解决方案:


步骤1:修改SharedModule配置

找到shared/shared.module.ts文件,补充导入/导出RouterModule,同时确保MainComponent已在该模块声明并导出:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { MainComponent } from './main/main.component';

@NgModule({
  declarations: [
    MainComponent
    // 其余共享组件可继续在此声明
  ],
  imports: [
    CommonModule,
    RouterModule // 新增导入RouterModule
  ],
  exports: [
    MainComponent,
    RouterModule // 导出RouterModule后,其他导入SharedModule的模块可直接使用路由相关指令
  ]
})
export class SharedModule { }

步骤2:修正HomeModule重复导入问题

BrowserModule仅允许在根模块AppModule中导入一次,你当前的HomeModule重复导入了该模块,删除对应导入即可,修改后代码如下:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { HomeRoutingModule } from './home-routing.module';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientModule } from '@angular/common/http';
import { SharedModule } from '../shared/shared.module';
import { HomeComponent } from './home.component';

@NgModule({
  declarations: [HomeComponent],
  imports: [
    CommonModule,
    BrowserAnimationsModule,
    HttpClientModule,
    HomeRoutingModule,
    SharedModule
  ],
  exports: [HomeComponent]
})
export class HomeModule { }

步骤3:移除AppRoutingModule中不必要的导入

AppRoutingModule不需要导入SharedModule,删除对应导入即可,修改后代码如下:

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { LoginComponent } from './login/login.component';

const routes: Routes = [
  { path: '', component: HomeComponent, pathMatch: 'full'},
  { path: 'login', component: LoginComponent},
  { path: 'home', component: HomeComponent},
  { path: '**', component: HomeComponent }
];

@NgModule({
  imports: [RouterModule.forRoot(routes, {useHash: false})],
  exports: [RouterModule],
})
export class AppRoutingModule {}

修改完成后重新执行ng serve启动项目即可解决报错。


内容的提问来源于stack exchange,提问作者study clan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:48:02