angular - rxjs switchMap 在 Angular Guard 中不起作用?
问题描述
return this.auth.user.pipe(
switchMap((user: IUser) => {
return of(true);
})
);
我的初始代码有点复杂,在某些情况下取决于用户数据,但出于测试目的,我在警卫的 canLoad 中使用了上面的代码,但它没有激活。
有任何 TS/编译错误。
我已经尝试过使用常春藤和不使用。
我正在使用 Angular 8.3;
解决方案
你必须使用 a 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)
);
推荐阅读
- python - Discord Py 需要在后台默默地给我的机器人角色
- html - 从 JSON 中获取输入字段
- c# - 我是否需要担心 Rx.NET FromEventPattern 的内存泄漏?
- javascript - 检索列在 nodeList 中的 jsFunction 的参数
- r - 有没有办法指定要在热图中返回的 kmeans 集群的数量
- python - 用模糊规范化列的字符串
- python - 来自未知节点的请求张量连接:“dense_5_target:0”
- python - 在 Pandas 中创建新行,通过添加到前一行,循环直到创建 x 行
- mysql - WildFly 下无法使用 MySQL 和 Gradle 运行 IntelliJ 项目
- mysql - 我需要从数据表中获取最大值和最小值