Angular17中如何读取Boolean类型Signal的取值?
解决Angular Signal在路由守卫中无法获取值的问题
问题原因
你看到的function getter()是因为Angular的Signal本质是一个函数,直接打印Signal变量本身,输出的就是这个函数对象,而非它存储的当前值。
正确取值方法
Angular的Signal需要通过**调用自身(像执行函数一样)**来读取当前值,具体操作如下:
1. 直接在路由守卫中调用Signal
修改路由守卫里的代码,给isAuthenticated加上括号:
const authService = inject(AuthService); console.log(authService.isAuthenticated()); // 调用Signal函数获取值
2. 修改服务中的getter方法
如果你想用getIsAAuthenticated方法返回值,需要在方法内部调用Signal,而不是返回Signal本身:
// 修改AuthService中的方法 getIsAAuthenticated() { return this.isAuthenticated(); // 调用Signal获取当前值 }
之后在路由守卫中调用这个方法就能拿到值:
const authService = inject(AuthService); console.log(authService.getIsAAuthenticated());
补充说明
Angular的Signal没有getValue()、.value这类读取值的方式,这类是其他框架(如Vue)或RxJS的用法。记住Angular Signal的核心规则:读取值就调用它,设置值用.set()或.update()。
内容的提问来源于stack exchange,提问作者suer231232131133
相关产品推荐
相关产品推荐

