我可以订阅Angular 6订阅

时间:2018-05-18 14:05:48

标签: angular6 rxjs6

我不太了解如何正确处理观察。所以我的代码有问题。

在使用中我有两种方法:

verify(): Observable<any> {
  return this.http.post(some_url);
}

// and

isAuthenticated(){
  this.verify().subscribe(
    data => {return true;},
    error => {return false;})
}

在守卫中我调用isAuthenticated方法,我需要从中获取布尔值。

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
  return this.auth.isAuthenticated() //?
}

如何正确处理?我应该返回isAuthenticated as Observable吗?订阅后卫?

1 个答案:

答案 0 :(得分:3)

我认为它应该是这样的。

验证服务:

import { map } from "rxjs/operators";

isAuthenticated(){
  return this.verify().pipe(map(response => response));
}

后卫:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot {
    return this.auth.isAuthenticated();
}