Javascript 角度5:类型';正确';不可分配给类型';可观察<;布尔值>;

Javascript 角度5:类型';正确';不可分配给类型';可观察<;布尔值>;,javascript,rxjs,angular5,Javascript,Rxjs,Angular5,我正在尝试在用户登录后更改登录状态 组件。ts isLoggedIn$: Observable<boolean>; constructor (private auth:Auth){} ngOnInit (){ this.isLoggedIn$ = this.auth.getUser() console.log(this.isLoggedIn$); } @Injectable() export class Auth { priv

我正在尝试在用户登录后更改登录状态

组件。ts

isLoggedIn$: Observable<boolean>; 

  constructor (private auth:Auth){}

  ngOnInit (){


     this.isLoggedIn$ = this.auth.getUser()

     console.log(this.isLoggedIn$);

  }
@Injectable()
export class Auth {

    private user:boolean = false;

     setUser(){

        this.user= true;
     }

     getUser(){
        return this.user
     }

    removeUser(){
        this.user = false;
    }

}
但是我犯了以下错误

错误TS2322:类型“true”不可分配给类型 “可观察的”


如果您在没有实际服务的情况下模拟
http
,您可以将loggedIn状态包装为可观察状态,如下所示,以便快速修复。看一看rxjs,了解
观测值
,以便更好地理解

@Injectable()
export class Auth {

    private user:boolean = false;

     setUser(){

        this.user= true;
     }

     getUser(): Observable<boolean>{
        return Observable.of(this.user)
     }

    removeUser(){
        this.user = false;
    }

}
@Injectable()
导出类身份验证{
私有用户:boolean=false;
setUser(){
this.user=true;
}
getUser():可观察{
返回可观察的(此用户)
}
removeUser(){
this.user=false;
}
}

另外:
console.log(this.isLoggedIn$)
将不会这样工作

您需要一个
可观察的
布尔值,但只返回一个
布尔值。如果您从异步映射到
boolean
值的
http
调用返回
Observable
,则此代码将更有意义。我正在使用
Auth
类模拟
http
服务如果您正在模拟,则返回
Observable.of(This.user)
您是否在模板中使用
isLoggedIn$
?如果是这样的话,您可以像
*ngIf=“isLoggedIn$| async”
一样使用它。是的,我正在使用它。我需要添加订户来侦听更改吗?我收到这个错误`Observable\u 1.Observable.of不是Auth.getUser的函数`您需要
导入这些<代码>从'rxjs/Observable'导入{Observable};导入“rxjs/add/observable/of”Promise
+
async
函数会更好。但是为什么不更新值呢??此组件对所有人都是通用的。您如何使用该值?如果它在模板中,您可以使用
isLoggedIn$| async
。否则您将不得不订阅