rxjs switchMap在Angular Guard中不起作用?

时间:2019-09-13 14:57:09

标签: angular rxjs angular-router-guards switchmap

return this.auth.user.pipe(
      switchMap((user: IUser) => {
        return of(true);
      })
    );

根据用户数据的不同,我的初始代码有些复杂,但是出于测试目的,我在警卫队的canLoad中使用了上面的代码,但该代码无法激活。

有任何TS /编译错误。

无论有没有常春藤,我都尝试过。

我正在使用Angular 8.3;

1 个答案:

答案 0 :(得分:6)

您必须使用take(1),因为我确定auth.user是流并且不会完成。警卫需要一个完整的Observable:

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

也许您删除了一些代码,但是您也可以在这里使用map:

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