rxjs switchMap在Angular Guard中不起作用?

Mic*_*elB 4 rxjs angular angular-router-guards switchmap

return this.auth.user.pipe(
      switchMap((user: IUser) => {
        return of(true);
      })
    );
Run Code Online (Sandbox Code Playgroud)

我的初始代码有些复杂,在某些情况下取决于用户数据,但是出于测试目的,我在警卫队的canLoad中使用了上面的代码,并且该代码无法激活。

任何TS /编译错误。

无论是否使用常春藤,我都尝试过。

我正在使用Angular 8.3;

Pie*_*Duc 6

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

return this.auth.user.pipe(
  take(1),
  switchMap((user: IUser) => of(!!user))
);
Run Code Online (Sandbox Code Playgroud)

也许您删除了一些代码,但也可以在此处使用map:

return this.auth.user.pipe(
  take(1),
  map((user: IUser) => !!user)
);
Run Code Online (Sandbox Code Playgroud)