首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >combineLatest 6+防护-向Angular订阅返回true/false

combineLatest 6+防护-向Angular订阅返回true/false
EN

Stack Overflow用户
提问于 2018-08-14 14:01:28
回答 1查看 661关注 0票数 0

如何在subscribe中返回true/false

代码语言:javascript
复制
import {Injectable} from '@angular/core';
import {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router';
import {AppState} from '../../app.state';
import {select, Store} from '@ngrx/store';
import {merge, combineLatest} from 'rxjs';
import {map, take, tap} from 'rxjs/operators';
import {HttpClient} from '@angular/common/http';


@Injectable()
export class PermissionsGuard implements CanActivate {

user;

constructor(
  private router: Router,
  private store: Store<AppState>
) {
}

canActivate(route: ActivatedRouteSnapshot): any {

  const academy$ = this.store.pipe(select(state => state.academy));
  const user$ = this.store.pipe(select(state => state.user));

  return combineLatest(
     academy$,
     user$
  ).pipe(
     map((data) => {
        console.log(data[0]);
        console.log(data[1]);
        return data;
     })
  ).subscribe((data) => {
     console.log(data);
     // return true or false to guard
  })
}

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-14 14:03:50

你根本就没有订阅你的观察者。

您应该始终为下一个链运算符返回一个Observable,在本例中为guard。

删除subscribe((data) => {...})部件。

如果必须应用自定义逻辑,请在map运算符中执行此操作,并返回您想要返回的任何内容,即truefalse

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51834611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档