1

我正在尝试从这样的服务器的套接字中获取属性

isVerified() {
    this.socket.emit('verify');

    return new Observable<boolean>(observer => {
        this.socket.on('isVerified', data => {
            observer.next(data)
            observer.complete()
        })
    })
}

数据将返回 true 或 false 所以在我的路由守卫中我有这个

canActivate(): Observable<boolean> {
    this._chat.isVerified()
        .subscribe(
            res => {
                return res
            },
            err => console.log(err)
        )
}

但它告诉我“声明类型既不是'void'也不是'any'的函数必须返回一个值。” 我一直在努力想办法让这项工作发挥作用,但我已经阅读了很多其他问题,但无济于事。控制台日志记录 res 确实给了我真假。

4

1 回答 1

2

canActivate返回类型是Observable | 承诺 | 布尔值

所以你应该在你的情况下返回一个可观察的:

canActivate(): Observable<boolean> {
    this._chat.isVerified();
}
于 2018-09-03T04:08:23.240 回答