Javascript 当服务中的数据更改时,如何更新标头组件?

Javascript 当服务中的数据更改时,如何更新标头组件?,javascript,angular,Javascript,Angular,参考: 当前行为:当标头组件中的变量值更改时,用户登录并且菜单项不更新。它仅在刷新页面时更新 预期行为:在用户登录时隐藏菜单中的某些菜单项-立即 Header组件包含菜单和订阅的身份验证服务: isAuthenticated: boolean = false; this.items = [ { title: 'Home', link: '/', home: true, }, { title: 'Dashboard', link: '/dash

参考:

当前行为:当标头组件中的变量值更改时,用户登录并且菜单项不更新。它仅在刷新页面时更新

预期行为:在用户登录时隐藏菜单中的某些菜单项-立即

Header组件包含菜单和订阅的身份验证服务:

isAuthenticated: boolean = false;

this.items = [
  {
    title: 'Home',
    link: '/',
    home: true,
  },
  {
    title: 'Dashboard',
    link: '/dashboard',
    hidden: !this.isAuthenticated,
  },
]
ngOnInit() {
    this.authService.isAuthenticated().subscribe(res => this.isAuthenticated = res);
}

您应该使用数组过滤器 比如说

this.authService.isAuthenticated().subscribe(res=>{
    this.isAuthenticated = res
    res.filter(elem=>{
        this.isAuthenticated = res
    }
} );

猜测一下,
isAuthenticated()
只返回单个值的流,不会根据需要由
authService
更新。@jornsharpe
isAuthenticated()
在用户登录或注销时更新。登录和注销都有检测更改的
ChangeDetectorRef
。那么另一个问题可能是
!此.isAuthenticated
可能只计算一次。但是请给出一个正确的答案。@jornsharpe是的,
!此.isAuthenticated
仅更新一次。为什么您会期望其他情况?如果它在一个方法之外,什么时候更新?它不是对
isAuthenticated
属性的神奇引用,它只是值
true
res
是一个布尔值,TypeScript一点也不像这样。