Angular-可观察到的错误布尔返回语句

时间:2018-10-02 13:19:38

标签: angular rxjs

我不知道今天的编码时间是否太长,或者缺少明显的东西,但是我有一个方法应该返回一个可观察的布尔值:

  public canCreateStory(): Observable<boolean> {
     return this.isAuthenticated().pipe(tap(result => {
        console.log(result && this.authInstance.currentUser.emailVerified); <== prints out false
        return result && this.authInstance.currentUser.emailVerified;}));
  }

现在,当我订阅该方法时,它会打印出true

  ngOnInit() {
     this.authService.canCreateStory().subscribe(result => console.log(result)) <== prints out true!?
  }

我在这里做什么错了?

1 个答案:

答案 0 :(得分:1)

为了修改可观察对象发出的值,请使用map而不是tap

public canCreateStory(): Observable<boolean> {
  return this.isAuthenticated().pipe(
    map(result => result && this.authInstance.currentUser.emailVerified)
  );
}

来自RxJS文档:

  

tap

     

对源上的每个发射都产生副作用。   返回与源相同的Observable。

  

map

     

将给定的项目函数应用于由   源Observable,并将结果值作为Observable发出。