我有2个组件在我的应用程序。在一个组件的按钮点击,我想在其他组件调用一个函数。该函数接受id作为参数,并且需要一个对象。我可以使用RXJS从第一个组件发送id或对象,但不能同时发送。这两个组件是兄弟组件。下面是我的代码。
组件1:-
searchObject;
toggle1(id:number){
this.dashboardService.sendToggleEvent(id);
}
服务:
sendToggleEvent(id:number){
this.toggleSubject.next(id);
}
getToggleEvent():Observable<any>{
return this.toggleSubject.asObservable();
}
组件2:-
constructor(){
this.toggleEventSubscription =
this.dashboardService.getToggleEvent().subscribe((id)=>{
this.toggle2(id);
});
}
toggle2(id){
if(id == __){
api(searchObj)
}
toggle2有一个api,它需要一个名为searchObj的对象组件1。当toggle1被调用时,我调用toggle2并传递id but无法传递searchObject.
TIA。
您将需要一个服务和类型为subject的属性
service.ts
mySub = new Subject();
componet1
this.myService.mySub.next({id:123,data:{}})
component2
this.myService.mySub.subScribe(event=>{
this.callfn(event.id,event.data)
})
没有代码将很难帮助你,但我会尝试。
所以你在使用RXJS,我的意思是可观察的。因此,当您的第二个组件接收到id或对象时,您可以调用该函数(在订阅中)。
observable.subscribe({
next(x) { callFunction(x) },
error(err) { console.error('something wrong occurred: ' + err); },
complete() { console.log('done'); }
});
不要犹豫,看看文档:https://rxjs.dev/guide/observable