Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度:类型';可观察<;布尔值>';没有兼容的呼叫签名_Angular_Angular2 Observables_Behaviorsubject - Fatal编程技术网

Angular 角度:类型';可观察<;布尔值>';没有兼容的呼叫签名

Angular 角度:类型';可观察<;布尔值>';没有兼容的呼叫签名,angular,angular2-observables,behaviorsubject,Angular,Angular2 Observables,Behaviorsubject,我还在学习angular,我想用一个布尔可观测值创建一个服务,并订阅该可观测值 我之所以这样做是因为我真正想要的是在用户未登录时隐藏菜单导航链接,本教程与此基本相同 因此,在我的登录服务中: export class LoginService { private loggedIn = new BehaviorSubject<boolean>(false); get isLoggedIn() { console.log(this.loggedIn); ret

我还在学习angular,我想用一个布尔可观测值创建一个服务,并订阅该可观测值

我之所以这样做是因为我真正想要的是在用户未登录时隐藏菜单导航链接,本教程与此基本相同

因此,在我的登录服务中:

export class LoginService {

  private loggedIn = new BehaviorSubject<boolean>(false);

  get isLoggedIn() {
    console.log(this.loggedIn);
    return this.loggedIn.asObservable();
  }

  constructor(
    public http: Http,
    public utilsService: UtilsService) { }

  public login(credentials: Credentials): Observable<Response> {
    // login code
    // if user succeed login then:
    this.loggedIn.next(true);
  }

  public logout(): Observable<Response> {
    // logout code
    // if user succeed logout then:
    this.loggedIn.next(false);
  }
}

使用此getter将isLoggedIn定义为属性:

  get isLoggedIn() {
    console.log(this.loggedIn);
    return this.loggedIn.asObservable();
  }
但是你把它叫做一个函数:

您需要将其作为属性进行访问:

  this._login.isLoggedIn.subscribe(  // No () here
    ((res: boolean) => {
        console.log(res);
        this.isLoggedIn = res;
    })
  );

您使用的是哪个版本的Angular?因为我看到了
public http:http
,现在Angular建议使用
http:HttpClient
,如下所述:我添加了package.json的一部分来显示使用的版本。你为什么使用这个过时的Angular 4版本,如果最新的版本是Angular 7?我在大学收到这个web应用程序是为了学习和学习。我不能更新它,我必须使用我收到的。不是我的选择。有几个部分已经开发出来了,它们工作得很好。现在我必须做一些更改,但我不能,因为我收到了来自代码的错误。非常感谢!这是显而易见的,但我看不到,我失去了很多时间与它。现在它工作得很好。非常感谢。
  get isLoggedIn() {
    console.log(this.loggedIn);
    return this.loggedIn.asObservable();
  }
  this._login.isLoggedIn().subscribe(
    ((res: boolean) => {
        console.log(res);
        this.isLoggedIn = res;
    })
  );
  this._login.isLoggedIn.subscribe(  // No () here
    ((res: boolean) => {
        console.log(res);
        this.isLoggedIn = res;
    })
  );