rxjs switchMap 在 Angular Guard 中不工作?
rxjs switchMap not working in Angular Guard?
return this.auth.user.pipe(
switchMap((user: IUser) => {
return of(true);
})
);
我的初始代码在某些情况下有点复杂,具体取决于用户数据,但出于测试目的,我在守卫的 canLoad 中使用了上面的代码,但它没有激活。
存在 TS/compilation 个错误。
我已经尝试过使用 Ivy 和不使用它。
我正在使用 Angular 8.3;
您必须使用 take(1)
,因为我确定 auth.user
是一个流并且不会完成。守卫需要有一个完整的 Observable:
return this.auth.user.pipe(
take(1),
switchMap((user: IUser) => of(!!user))
);
也许你删除了一些代码,但你也可以在这里使用地图:
return this.auth.user.pipe(
take(1),
map((user: IUser) => !!user)
);
return this.auth.user.pipe(
switchMap((user: IUser) => {
return of(true);
})
);
我的初始代码在某些情况下有点复杂,具体取决于用户数据,但出于测试目的,我在守卫的 canLoad 中使用了上面的代码,但它没有激活。
存在 TS/compilation 个错误。
我已经尝试过使用 Ivy 和不使用它。
我正在使用 Angular 8.3;
您必须使用 take(1)
,因为我确定 auth.user
是一个流并且不会完成。守卫需要有一个完整的 Observable:
return this.auth.user.pipe(
take(1),
switchMap((user: IUser) => of(!!user))
);
也许你删除了一些代码,但你也可以在这里使用地图:
return this.auth.user.pipe(
take(1),
map((user: IUser) => !!user)
);