Angular 2 架构:ngModules 和路由器

Angular 2 Architecture: ngModules & Router

我打算建立一个网站,但对架构有些困惑。通常网站有一个 "home" 应用程序。具体来说,这是您营销主要应用程序、提供问答、博客、联系我们、定价等可能非常大的地方。一旦用户登录系统,他们就会进入 "main" 应用程序。

问题是只有一个路由器插座,并且两个应用程序在每条路线上都有完全不同的导航菜单。如果我在 AppModule 下有 HomeModule 和 MainModule,我应该为我的 nav/menues 组件使用 *ngIf 吗?我真的不清楚你如何在两个完全不同的应用程序之间导航,它们有自己的菜单并且只有一个路由器插座。另一种选择是在 HomeModule 和 MainModule 的每个模板中包含 nav/menus/footers 并且基本上在 AppComponent 的模板中只有路由器出口,这不是一个可扩展的解决方案。

如有任何帮助,我们将不胜感激。

这是一个例子:

app.component.html

<router-outlet></router-outlet>

具有 "no shell" 的视图(例如登录)被路由到此处。与 "shell" 组件一样。

shell.component.html

<pm-menu></pm-menu>

<div class='container'>
    <router-outlet></router-outlet>
</div>

所有其他页面都路由到此子路由器出口。

我只有一个 "shell",但你可以很容易地拥有一个 "home shell" 和一个 "main shell" 两者都会被路由到主要应用程序组件的路由器出口。

路线将如下所示:

RouterModule.forRoot([
    { 
        path: 'app', 
        component: MainShellComponent,
        children: [
            { path: 'page1', component: Page1Component },
            { path: 'page2', component: Page2Component },
        ]
    },
    {
        path: '',
        component: HomeShellComponent,
        children: [
            { path: 'welcome', component: WelcomeComponent },
            { path: '', redirectTo: 'welcome', pathMatch: 'full' },
        ]
    },
    { path: '**', component: PageNotFoundComponent }
])