如果路由有查询参数,则 angular 服务返回 true 或 false 如何处理订阅?



我正在Angular中创建一个保护,如果路由是否有查询参数,则必须返回true或false。

我创建了一个像这样的服务,返回Observable true或false:

export class MatchService {
constructor(private route: ActivatedRoute) {}
validateQuerys(): Observable<boolean> {
return this.route.queryParams.pipe(
map(res => {
return res['name'] ? true:false;
})
)
}
}

现在的问题是,如何在我的canMatch后卫中处理它?

export class routeMatcher implements CanMatch {
constructor(private matchService: MatchService) {}
canMatch(): boolean {
this.matchService.validateQuerys().subscribe({
next: res => (console.log(res))
// return?
// ¿How I can return true or false?
})
}
}

问题是我不知道在canMatch((函数中返回true或false的位置。

忽略我的评论,您的解决方案就这么简单。

return this.matchService.validateQuerys().pipe(first());

删除函数上的返回类型以避免键入错误,因为无论如何,函数类型都是从父推断出来的

最新更新