CanActivate:使用套接字侦听器的可观察布尔值

时间:2018-09-03 03:55:24

标签: angular canactivate angular-route-guards

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

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'的函数必须返回一个值。”而且我一直在head头,试图弄清楚这项工作,而且我读过许多其他问题都无济于事。控制台日志记录资源确实给我带来了真还是假。

1 个答案:

答案 0 :(得分:2)

canActivate返回类型为可观察|承诺|布尔值

因此,您应该返回一个可观察的值:

canActivate(): Observable<boolean> {
    this._chat.isVerified();
}