【问题标题】:CanActivate: Observable Boolean with Socket listenerCanActivate:带有套接字侦听器的可观察布尔值
【发布时间】:2018-09-03 12:08:23
【问题描述】:

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

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 确实给了我真假。

【问题讨论】:

    标签: angular canactivate angular-route-guards


    【解决方案1】:

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

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

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

    【讨论】:

    • 那订阅什么?
    • 路由器模块将订阅你传递的 observable
    • 啊,我明白我在哪里弄糊涂了。
    猜你喜欢
    • 1970-01-01
    • 2020-10-28
    • 2012-03-17
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    相关资源
    最近更新 更多