2016-07-07 50 views
1

我正在寻找一些关于Angular2的预期设计是用于登录还是登录视图的建议。Angular2路由设计 - 默认导航组件与登录

如果我的用户登录,我想要一个默认显示的导航和菜单栏组件 - 因此我会把它放在显示当前路由视图的router-outlet之外。

路由是由路由守护,如果用户没有登录其重定向到一个登录页面的保护。

这里的渔获艰难的,我显然不希望菜单和导航显示,如果用户尚未登录。

那么这种情况下的预期设计是什么?我是否需要使用2个路由器插座,一个用于登录vs!loggedIn视图,另一个用于实际路由组件?

回答

0

由于您为将来的后端调用保存了一个令牌,因此您可以* ngIf和询问您的本地存储服务,或者如果用户之前根据令牌的存在或以前的任何逻辑使用。 这样做这样的事情:

<header id="mysupersecretheader" *ngIf="loggedIn"></header> 

如果结果是假的,你会得到这样的输出HTML:

<!--template bindings={ 
    "ng-reflect-ng-if": "false" 
}--> 

这甚至不会暴露什么打算在那里。

由于一切都在不断变化,你应该阅读发行说明和文档,它真的有帮助! Here is the template syntax section

+0

谢谢!最初,这对我来说并不适用,因为一些CSS设计问题,但最终我决定css必须改变,因为ngIf确实是处理这种情况的最佳方式。干杯,汤姆 – TommyF

1

但是当您按下浏览器的后退按钮时,这种方法会中断。 即它会带你到有效登录的登录页面。你可以看到导航栏。

+0

你是对的。任何解决方案? – TommyF

+0

我正在使用全局事件发射器,它将发射将在AuthGuard中的事件'showNavBar'。它在应用程序组件的构造函数中订阅。 – user1882613