CanActivate:带有Socket侦听器的Observable布尔值

问题描述 投票:1回答: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)
        )
}

但它告诉我“声明类型既不是'无效'也不是'任何'的函数必须返回一个值。”我一直在挣扎着想要做出这项工作,并且我已经阅读了很多其他问题而无济于事。控制台记录res确实给了我真或假。

angular canactivate angular-route-guards
1个回答
2
投票

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

所以你应该在你的情况下返回一个observable:

canActivate(): Observable<boolean> {
    this._chat.isVerified();
}
© www.soinside.com 2019 - 2024. All rights reserved.