提问者:小点点

基于角度路由的基本惰性加载模块路由问题


尽管我对Angular比较陌生,但它应该是如此简单以至于让我发疯。我使用带有“使用角度路由”选项的CLI创建了一个角度项目。创建了一个功能模块,并使用VS代码中的支架插件(Alexander Ivanichev的“Angular Files”)为其添加了一个路由类。一开始,我只是直接在app.component.html中添加组件选择器,它工作得很好,当我添加了路由器出口,将所有东西连在一起,并将“/submodule”部分添加到浏览器中的地址时,子模块组件不再显示在页面中,控制台中也没有任何错误。

正如您所看到的,脚手架工具做了一些与文档有点不同的事情,我试图修改所有内容来创建一个常规的NgModule,并移动一些东西,但它仍然没有工作。

以下是我的设置:

app.component.html

<div class="root-container">
  <header>
      Site name and other things go here
  </header>
  <aside class="menu">
    <h2>Menu</h2>
    <nav>
      <ul>
        <li><a href="*">Menu item 1</a></li>
        <li><a href="*">Menu item 2</a></li>
        <li><a href="*">Menu item 3</a></li>
        <li><a href="*">Menu item 4</a></li>
      </ul>
    </nav>
  </aside>

  <div class="content">
    <router-outlet></router-outlet>
    <!--
    <app-my-component></app-my-component>
    -->
  </div>
  <aside>some content</aside>
  <footer>This is the footer</footer>
</div>

app.module.ts

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    MyFeatureModule, <- This is the one I'm trying to load
    AppRoutingModule
  ],
  providers: [],
  exports: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

app-routing.module.ts

const routes: Routes = [
  { path: 'submodule', loadChildren: () => import('./featuremodule/feature.module').then(m => m.MyFeatureModule)}
];

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

特色模特儿.TS

@NgModule({
  declarations: [
    MyComponent
  ],
  imports: [
    CommonModule,
    FeatureModuleRoutes
  ],
  providers: [
    // some providers
  ],
  exports: []
})
export class MyFeatureModule { }

特色Remodule.Routing.TS

const routes: Routes = [
  { path: 'mycomponent', component: MyComponent },
];

export const FeatureRoutes = RouterModule.forChild(routes);

谢谢你的帮助


共2个答案

匿名用户

根据路由设置,您需要导航到/submodule/MyComponent以查看MyComponent组件。

此外,您不应再将MyFeatuRemodule导入到AppModule中。这将破坏惰性加载模块的目的,因为它将包含在appmodule中。

匿名用户

您不需要在app.module.ts中导入MyFeatureDule。