<router-outlet>
<!-- When your route is '/login' login component rendered here.
If it is '/admin' admin component rendered here -->
<router-outlet>
login.component.html
//login page content
admin.component.html
<app-top-nav></app-top-nav>
<app-side-nav></app-side-nav>
<div class="content-wrapper">
<router-outlet>
<!-- Whatever route you map in top-nav and side-nav will be rendered here -->
</router-outlet>
</div>
4 回答
保留路由器插座,但使用路由器防护装置以防止路由被呈现,除非用户登录 . 我在这里写博客:
https://yakovfain.com/2016/07/20/angular-2-guarding-routes/
如果我理解您的问题,您希望隐藏未登录用户的“顶部导航”和“幻灯片菜单” .
我执行此操作的方法是将这些控件/组件从您在
<router-outlet></router-outlet>
中呈现的页面中拉出,然后将其隐藏直到用户登录(可能通过身份验证服务上的布尔属性显示用户已成功登录) .所以类似的东西:
登录页面在路由器插座中呈现,当用户成功登录时,将在服务上设置标志,并呈现下一页并将顶部导航/幻灯片菜单添加到DOM .
如果我离开基地,请告诉我,也许我仍然可以提供帮助
你的问题的正确解决方案不是围绕
router-outlet
,而是使用一个额外的组件(让我们称之为RootComponent
)与router-outlet
(RO1),但没有导航和侧面菜单 . 在RO1中,您应该加载组件NavMenuComponent
(使用导航,侧边菜单和自己的router-outlet
RO2) . 然后你可以使用子路径来确保RootComponent
中的RO1加载NavMenuComponent
(将具有导航和侧面菜单)或LoginComponent
(它将没有导航和侧面菜单) . 在RO2中将加载您现在拥有的内容 .假设
RootComponent
是模块中的deafult组件,路由将如下所示:RootComponent
只能:更多信息:https://angular.io/guide/router#child-routing-component
This is the solution working in my app.
使用登录页面内容创建登录组件 .
创建TopNav组件 .
创建SideNav组件 .
创建要在登录后使用Top Nav,Side Nav和其他要向登录用户显示的其他东西显示的其他组件(可以说是Admin) .
Route them in the Module like this...
app.component.html
login.component.html
admin.component.html