尽管我对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);
谢谢你的帮助
根据路由设置,您需要导航到/submodule/MyComponent
以查看MyComponent
组件。
此外,您不应再将MyFeatuRemodule
导入到AppModule
中。这将破坏惰性加载模块的目的,因为它将包含在appmodule
中。
您不需要在app.module.ts中导入MyFeatureDule。