Angular rxjs switchMap在角度保护中不工作?

Angular rxjs switchMap在角度保护中不工作?,angular,rxjs,angular-router-guards,switchmap,Angular,Rxjs,Angular Router Guards,Switchmap,我的初始代码有点复杂,有些情况取决于用户数据,但出于测试目的,我在guard的canLoad中使用了上面的代码,它不会激活 有TS/编译错误 我用常春藤和不用常春藤都试过 我用的是Angular 8.3 您必须使用take(1),因为我确信auth.user是一个流,并且不完整。警卫需要有一个完整的可观察的: return this.auth.user.pipe( switchMap((user: IUser) => { return of(true);

我的初始代码有点复杂,有些情况取决于用户数据,但出于测试目的,我在guard的canLoad中使用了上面的代码,它不会激活

有TS/编译错误

我用常春藤和不用常春藤都试过


我用的是Angular 8.3

您必须使用
take(1)
,因为我确信
auth.user
是一个流,并且不完整。警卫需要有一个完整的可观察的:

return this.auth.user.pipe(
      switchMap((user: IUser) => {
        return of(true);
      })
    );
也许您删除了一些代码,但也可以在此处使用map:

return this.auth.user.pipe(
  take(1),
  switchMap((user: IUser) => of(!!user))
);

请写这封信error@KhashayarPakkhesal没有错误,路由没有激活。为了安全起见,我添加了catchError操作符,而且也没有错误。我已经检查代码是否在switchMap中运行,如果我在控制台上记录了一些东西,当我尝试激活路由时,它会显示出来。从未完成或可能从未发出。这两种方法都可以阻止它加载。这是有效的——我不知道警卫需要一个完整的可观察的。非常感谢!
return this.auth.user.pipe(
  take(1),
  map((user: IUser) => !!user)
);