2017-06-01 48 views
0

后我有一个主容器组分和侧栏的角应用程序。父组件包含两者。主容器也是其余组件的主要和唯一路由器输出。角2显示侧边栏由ngIf隐藏的登录

侧边栏模板会在sessionStorage特定键,如果该键不存在,它从DOM删除自身。我正在使用ngOnInit来检查sessionStorage*ngIf以显示/隐藏组件。

如果密钥不在sessionStorage中,侧边栏隐藏自身并且用户被重定向到/login,该组件显示在主容器组件上。当成功地在用户登录,关键是在sessionStorage设置,并且用户被重定向到'/'(其加载初始屏幕中用户主容器上的记录),但是边栏保持隐藏/移除。

我怎样才能让侧边栏再次出现?我是否需要触发事件,和/或通过父组件动态添加组件?

谢谢。

+0

是的,身份验证服务应该在侧边栏应该订阅的observable上发出事件。 –

回答

1

在你app.component.ts您可以订阅路由器事件要做到这一点如

import { OnInit } from '@angular/core'; 
import { Router } from '@angular/router'; 

export class AppComponent implements OnInit { 
    constructor(private router: Router) { } 

    ngOnInit(): void { 
     this.router.events.subscribe(() => { 
      this.showSidebar = // check if it exists 
     }); 
    } 
} 
+1

它的工作! 当我问,该ngIf在侧边栏模板本身(侧边栏组件模板包含ngIf),让我感动的ngIf到母部件和应用解决方案。我担心我需要实现更复杂的元素。 谢谢。 – aerojas

+0

@aerojas优秀! –

+0

@JamieR感谢您的答案。我在我的AppComponent中使用了这段代码。在我的应用程序中,这个'检查用户是否存在'的特定代码已被多次调用(3-4次)。有什么方法可以检查一次吗?比方说,只有当新的组件被加载。对不起,如果我不清楚。 –

相关问题