Nic*_*icO 0 subscription observable rxjs angular
一旦我创建的服务连接到他的服务器,我就会尝试执行操作。目前我只是保存一个connected: boolean改变连接和连接丢失的状态,并将其作为可观察对象返回。
通过订阅,我只能检索可观察对象的初始状态。该认购并没有在布尔改变其价值火(它一样)。
任何帮助表示赞赏。
app.component.ts(订阅)
ngOnInit() {
this.moduleService.isConnected().subscribe(value => console.log(value));
}
Run Code Online (Sandbox Code Playgroud)
module.service.ts(在组件中注入)
isConnected(): Observable<boolean> {
return of(this._mqttApi.isConnected());
}
Run Code Online (Sandbox Code Playgroud)
mqttApi.ts(此处更改布尔值)
connected: boolean = false;
onConnect(){
connected = true;
}
onConnectionLost(){
connected = false
}
public isConnected(): boolean{
return this.connected;
}
Run Code Online (Sandbox Code Playgroud)
在您的 module.service.ts 中,您只返回一个仅通过使用of. 您需要的是 BehaviorSubject 或 Subject 作为连接属性的类型,而不是 mqttApi.ts 中的布尔值
如果您不希望服务使用此 observable 对主题进行更改,然后使用 connected.asObservable() 将该 observable 设为 public。否则,您也可以将主题/行为主题设为公开。
在您的方法中,您正在调用 connected.next(true|false)
像这样的东西:
connected: BehaviorSubject<boolean> = new BehaviorSubject(false);
onConnect(){
this.connected.next(true);
}
onConnectionLost(){
this.connected.next(false)
}
public isConnected(): Observable<boolean>{
return this.connected.asObservable();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1171 次 |
| 最近记录: |