Angular Material 中的变化不会触发 RxJS Observable
RxJS Observable not triggering on change in Angular Material
我正在尝试在我创建的服务连接到他的服务器后立即执行操作。目前我只是简单地保存一个 connected: boolean
来改变连接和连接丢失的状态,并且 return 它作为一个可观察的。
通过订阅,我只能检索 Observable 的初始状态。当布尔值改变它的值时,订阅 不会 触发。
感谢任何帮助。
app.component.ts(订阅)
ngOnInit() {
this.moduleService.isConnected().subscribe(value => console.log(value));
}
module.service.ts(在组件中注入)
isConnected(): Observable<boolean> {
return of(this._mqttApi.isConnected());
}
mqttApi.ts(这里的布尔值变化)
connected: boolean = false;
onConnect(){
connected = true;
}
onConnectionLost(){
connected = false
}
public isConnected(): boolean{
return this.connected;
}
在您的 module.service.ts 中,您仅返回一个仅使用 of
发出一次的可观察对象。您需要的是 BehaviorSubject 或 Subject 作为已连接 属性 的类型,而不是 mqttApi.ts
中的布尔值
如果您不希望使用此可观察对象的服务对主题进行更改,则使用 connected.asObservable() 使可观察对象 public 生效。否则你也可以使 subject/behaviourSubject 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();
}
我正在尝试在我创建的服务连接到他的服务器后立即执行操作。目前我只是简单地保存一个 connected: boolean
来改变连接和连接丢失的状态,并且 return 它作为一个可观察的。
通过订阅,我只能检索 Observable 的初始状态。当布尔值改变它的值时,订阅 不会 触发。
感谢任何帮助。
app.component.ts(订阅)
ngOnInit() {
this.moduleService.isConnected().subscribe(value => console.log(value));
}
module.service.ts(在组件中注入)
isConnected(): Observable<boolean> {
return of(this._mqttApi.isConnected());
}
mqttApi.ts(这里的布尔值变化)
connected: boolean = false;
onConnect(){
connected = true;
}
onConnectionLost(){
connected = false
}
public isConnected(): boolean{
return this.connected;
}
在您的 module.service.ts 中,您仅返回一个仅使用 of
发出一次的可观察对象。您需要的是 BehaviorSubject 或 Subject 作为已连接 属性 的类型,而不是 mqttApi.ts
如果您不希望使用此可观察对象的服务对主题进行更改,则使用 connected.asObservable() 使可观察对象 public 生效。否则你也可以使 subject/behaviourSubject 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();
}