是的,您可以使用 rxjs 和 BehaviourSubject 来实现此目的
您必须在复选框中输入一些值,然后 onchange 您必须调用一个函数来通知您另一个组件中的订阅者。我正在为您编写一个非常基本的示例。
在你的sender.component.html 你可以这样做
<input type=checkbox [(ngModel)]="myCheckBox" (ngChanged)="!myCheckBox" (change)="notifyOtherComponent()">
然后在你的service.ts 你可以这样做
import { BehaviorSubject } from 'rxjs';
private messageSource = new BehaviorSubject('default message');
public currentMessageSubscriber = this.messageSource.asObservable();
notify(message: any) {
this.messageSource.next(message)
}
在你的sender.component.ts 你可以这样做
constructor(private __dataService : DataService){}
notifyOtherComponent(){
this.__dataService.notify({msg : 'do something'})
}
并且在您的 listener.component.ts 中,您可以订阅 BehaviourSubject 类型 Observable 以收听这样的最新值
constructor(private __dataService : DataService){}
ngOnInit() {
this.__dataService.currentMessageSubscriber.subscribe((data : any)=>{
console.log(data) // output : {msg : 'do something'}
})
}
通过这种方式,您将从一个组件向 observable 发送数据,并将该数据监听到另一个组件。