Angular rxjs switchMap在角度保护中不工作?
我的初始代码有点复杂,有些情况取决于用户数据,但出于测试目的,我在guard的canLoad中使用了上面的代码,它不会激活 有TS/编译错误 我用常春藤和不用常春藤都试过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);
我用的是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)
);