【问题标题】:Angular router-outlet not recognized角度路由器插座无法识别
【发布时间】:2019-10-23 10:56:23
【问题描述】:

为了提高我的技能,我正在尝试所有我在角度得到的想法

在这种情况下,我正在尝试为由两个功能模块和一个共享模块组成的功能模块路由。

我的生根是使用 cli 命令生成的 ng g m router --routing 并手动更新如下

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { InterpolationComponent } from '../exemple100/interpolation/interpolation.component'
import { PageNotFoundComponent } from '../page-not-found/page-not-found.component';
import { AppComponent } from '../app.component';
import { Ex200Component } from '../ex200/ex200.component';
import { Ex300Component } from '../ex300/ex300.component';
import { Ex400Component } from '../ex400/ex400.component';
import { Ex500Component } from '../ex500/ex500.component';
import { SalesComponent } from '../ex500/sales/sales.component';
import { SupportComponent } from '../ex500/support/support.component';

const routes: Routes = [
  {path: 'ex100', component: InterpolationComponent },
  {path: 'ex200', component: Ex200Component },
  {path: 'ex300', component: Ex300Component },
  {path: 'ex400', component: Ex400Component },
  {path: 'ex500', component: Ex500Component },
  {path: 'ex500/sales', component: SalesComponent },
  {path: 'ex500/support', component: SupportComponent },
  {path: '**', component: PageNotFoundComponent },
  {path: '', component: AppComponent }
];

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

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { RouterRoutingModule } from './router-routing.module';

@NgModule({
  declarations: [],
  imports: [
    CommonModule,
    RouterRoutingModule
  ]
})
export class RouterModule { }

然后我手动更新引导应用程序模块

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { InterpolationComponent } from './exemple100/interpolation/interpolation.component';
import { Ex200Component } from './ex200/ex200.component';
import { Ex300Component } from './ex300/ex300.component';
import { FormsModule } from '@angular/forms';
import { Ex400Component } from './ex400/ex400.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';
import { RouterModule } from './router/router.module';
import { Ex500Module } from './ex500/ex500.module';

@NgModule({
  declarations: [
    AppComponent,
    InterpolationComponent,
    Ex200Component,
    Ex300Component,
    Ex400Component,
    PageNotFoundComponent
  ],
  imports: [BrowserModule, FormsModule, RouterModule, Ex500Module],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}

Ex500Module 是我的组合功能模块(销售和支持:都使用共享模块)

我的路由器插座还没有被我的主要组件识别,为什么?

对于我对角度路由和模块处理的基本理解:

导入一个模块就是导入它导出的组件:在我的例子中,RouterModule(@angular/router) 是在 RouterRoutingModule 中导出的,它是通过我的 RouterModule(./router/router.module) 导入到 AppModule 中的,所以这一切导出的组件应该被导入

【问题讨论】:

  • 您的RouterModule 没有导出任何内容。尝试通过将导入的RouterRoutingModule 添加到RouterModule 中的exports 数组来重新导出它
  • @jpavel 我认为导入模块 A 导入模块 B 将使 B 导出的组件可用,这恰好是假的,谢谢
  • 这就是 NgModule 的工作原理。当您在另一个模块中导入一个模块时,您将在后者中拥有您在前者中导出的内容。
  • @MohammedHousseynTaleb 你有没有在你的主要组件或appComponent中使用<router-outlet></router-outlet>

标签: angular typescript angular2-routing


【解决方案1】:

我不知道为什么你有两个模块叫做Router和RouterRouting,但是如果你这样做了,你需要在中间模块中重新导出路由器

@NgModule({
  declarations: [],
  imports: [
    CommonModule,
    RouterRoutingModule
  ],
export: [ RouterRoutingModule ]
})
export class RouterModule { }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2017-02-15
    相关资源
    最近更新 更多